mirror of
https://github.com/git/git.git
synced 2024-10-28 12:59:41 +01:00
ls-remote: introduce --branches and deprecate --heads
We call the tips of branches "heads", but this command calls the option to show only branches "--heads", which confuses the branches themselves and the tips of branches. Straighten the terminology by introducing "--branches" option that limits the output to branches, and deprecate "--heads" option used that way. We do not plan to remove "--heads" or "-h" yet; we may want to do so at Git 3.0, in which case, we may need to start advertising upcoming removal with an extra warning when they are used. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a096e70c78
commit
b773fb8822
3 changed files with 39 additions and 12 deletions
|
@ -9,7 +9,7 @@ git-ls-remote - List references in a remote repository
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git ls-remote' [--heads] [--tags] [--refs] [--upload-pack=<exec>]
|
'git ls-remote' [--branches] [--tags] [--refs] [--upload-pack=<exec>]
|
||||||
[-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]
|
[-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]
|
||||||
[--symref] [<repository> [<patterns>...]]
|
[--symref] [<repository> [<patterns>...]]
|
||||||
|
|
||||||
|
@ -21,14 +21,16 @@ commit IDs.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
-h::
|
-b::
|
||||||
--heads::
|
--branches::
|
||||||
-t::
|
-t::
|
||||||
--tags::
|
--tags::
|
||||||
Limit to only refs/heads and refs/tags, respectively.
|
Limit to only local branches and local tags, respectively.
|
||||||
These options are _not_ mutually exclusive; when given
|
These options are _not_ mutually exclusive; when given
|
||||||
both, references stored in refs/heads and refs/tags are
|
both, references stored in refs/heads and refs/tags are
|
||||||
displayed. Note that `git ls-remote -h` used without
|
displayed. Note that `--heads` and `-h` are deprecated
|
||||||
|
synonyms for `--branches` and `-b` and may be removed in
|
||||||
|
the future. Also note that `git ls-remote -h` used without
|
||||||
anything else on the command line gives help, consistent
|
anything else on the command line gives help, consistent
|
||||||
with other git subcommands.
|
with other git subcommands.
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include "wildmatch.h"
|
#include "wildmatch.h"
|
||||||
|
|
||||||
static const char * const ls_remote_usage[] = {
|
static const char * const ls_remote_usage[] = {
|
||||||
N_("git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
|
N_("git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>]\n"
|
||||||
" [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]\n"
|
" [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]\n"
|
||||||
" [--symref] [<repository> [<patterns>...]]"),
|
" [--symref] [<repository> [<patterns>...]]"),
|
||||||
NULL
|
NULL
|
||||||
|
@ -68,7 +68,10 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||||
N_("path of git-upload-pack on the remote host"),
|
N_("path of git-upload-pack on the remote host"),
|
||||||
PARSE_OPT_HIDDEN },
|
PARSE_OPT_HIDDEN },
|
||||||
OPT_BIT('t', "tags", &flags, N_("limit to tags"), REF_TAGS),
|
OPT_BIT('t', "tags", &flags, N_("limit to tags"), REF_TAGS),
|
||||||
OPT_BIT('h', "heads", &flags, N_("limit to heads"), REF_BRANCHES),
|
OPT_BIT('b', "branches", &flags, N_("limit to branches"), REF_BRANCHES),
|
||||||
|
OPT_BIT_F('h', "heads", &flags,
|
||||||
|
N_("deprecated synonym for --branches"), REF_BRANCHES,
|
||||||
|
PARSE_OPT_HIDDEN),
|
||||||
OPT_BIT(0, "refs", &flags, N_("do not show peeled tags"), REF_NORMAL),
|
OPT_BIT(0, "refs", &flags, N_("do not show peeled tags"), REF_NORMAL),
|
||||||
OPT_BOOL(0, "get-url", &get_url,
|
OPT_BOOL(0, "get-url", &get_url,
|
||||||
N_("take url.<base>.insteadOf into account")),
|
N_("take url.<base>.insteadOf into account")),
|
||||||
|
|
|
@ -47,6 +47,7 @@ test_expect_success setup '
|
||||||
git show-ref -d >refs &&
|
git show-ref -d >refs &&
|
||||||
sed -e "s/ / /" refs >>expected.all &&
|
sed -e "s/ / /" refs >>expected.all &&
|
||||||
|
|
||||||
|
grep refs/heads/ expected.all >expected.branches &&
|
||||||
git remote add self "$(pwd)/.git" &&
|
git remote add self "$(pwd)/.git" &&
|
||||||
git remote add self2 "."
|
git remote add self2 "."
|
||||||
'
|
'
|
||||||
|
@ -71,6 +72,27 @@ test_expect_success 'ls-remote self' '
|
||||||
test_cmp expected.all actual
|
test_cmp expected.all actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'ls-remote --branches self' '
|
||||||
|
git ls-remote --branches self >actual &&
|
||||||
|
test_cmp expected.branches actual &&
|
||||||
|
git ls-remote -b self >actual &&
|
||||||
|
test_cmp expected.branches actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'ls-remote -h is deprecated w/o warning' '
|
||||||
|
git ls-remote -h self >actual 2>warning &&
|
||||||
|
test_cmp expected.branches actual &&
|
||||||
|
test_grep ! deprecated warning
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'ls-remote --heads is deprecated and hidden w/o warning' '
|
||||||
|
test_expect_code 129 git ls-remote -h >short-help &&
|
||||||
|
test_grep ! -e --head short-help &&
|
||||||
|
git ls-remote --heads self >actual 2>warning &&
|
||||||
|
test_cmp expected.branches actual &&
|
||||||
|
test_grep ! deprecated warning
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'ls-remote --sort="version:refname" --tags self' '
|
test_expect_success 'ls-remote --sort="version:refname" --tags self' '
|
||||||
generate_references \
|
generate_references \
|
||||||
refs/tags/mark \
|
refs/tags/mark \
|
||||||
|
@ -275,7 +297,7 @@ test_expect_success 'ls-remote with filtered symref (refname)' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'ls-remote with filtered symref (--heads)' '
|
test_expect_success 'ls-remote with filtered symref (--branches)' '
|
||||||
git symbolic-ref refs/heads/foo refs/tags/mark &&
|
git symbolic-ref refs/heads/foo refs/tags/mark &&
|
||||||
cat >expect.v2 <<-EOF &&
|
cat >expect.v2 <<-EOF &&
|
||||||
ref: refs/tags/mark refs/heads/foo
|
ref: refs/tags/mark refs/heads/foo
|
||||||
|
@ -283,9 +305,9 @@ test_expect_success 'ls-remote with filtered symref (--heads)' '
|
||||||
$rev refs/heads/main
|
$rev refs/heads/main
|
||||||
EOF
|
EOF
|
||||||
grep -v "^ref: refs/tags/" <expect.v2 >expect.v0 &&
|
grep -v "^ref: refs/tags/" <expect.v2 >expect.v0 &&
|
||||||
git -c protocol.version=0 ls-remote --symref --heads . >actual.v0 &&
|
git -c protocol.version=0 ls-remote --symref --branches . >actual.v0 &&
|
||||||
test_cmp expect.v0 actual.v0 &&
|
test_cmp expect.v0 actual.v0 &&
|
||||||
git -c protocol.version=2 ls-remote --symref --heads . >actual.v2 &&
|
git -c protocol.version=2 ls-remote --symref --branches . >actual.v2 &&
|
||||||
test_cmp expect.v2 actual.v2
|
test_cmp expect.v2 actual.v2
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -335,9 +357,9 @@ test_expect_success 'ls-remote patterns work with all protocol versions' '
|
||||||
test_expect_success 'ls-remote prefixes work with all protocol versions' '
|
test_expect_success 'ls-remote prefixes work with all protocol versions' '
|
||||||
git for-each-ref --format="%(objectname) %(refname)" \
|
git for-each-ref --format="%(objectname) %(refname)" \
|
||||||
refs/heads/ refs/tags/ >expect &&
|
refs/heads/ refs/tags/ >expect &&
|
||||||
git -c protocol.version=0 ls-remote --heads --tags . >actual.v0 &&
|
git -c protocol.version=0 ls-remote --branches --tags . >actual.v0 &&
|
||||||
test_cmp expect actual.v0 &&
|
test_cmp expect actual.v0 &&
|
||||||
git -c protocol.version=2 ls-remote --heads --tags . >actual.v2 &&
|
git -c protocol.version=2 ls-remote --branches --tags . >actual.v2 &&
|
||||||
test_cmp expect actual.v2
|
test_cmp expect actual.v2
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue