branch: honor --abbrev/--no-abbrev in --list mode
When the "branch --list" command was converted to use the --format facility from the ref-filter API, we forgot to honor the --abbrev setting in the default output format and instead used a hardcoded "7". Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
44a6b6ce17
commit
ac5bbc02b8
@ -335,9 +335,18 @@ static char *build_format(struct ref_filter *filter, int maxwidth, const char *r
|
||||
branch_get_color(BRANCH_COLOR_CURRENT));
|
||||
|
||||
if (filter->verbose) {
|
||||
struct strbuf obname = STRBUF_INIT;
|
||||
|
||||
if (filter->abbrev < 0)
|
||||
strbuf_addf(&obname, "%%(objectname:short)");
|
||||
else if (!filter->abbrev)
|
||||
strbuf_addf(&obname, "%%(objectname)");
|
||||
else
|
||||
strbuf_addf(&obname, "%%(objectname:short=%d)", filter->abbrev);
|
||||
|
||||
strbuf_addf(&local, "%%(align:%d,left)%%(refname:lstrip=2)%%(end)", maxwidth);
|
||||
strbuf_addf(&local, "%s", branch_get_color(BRANCH_COLOR_RESET));
|
||||
strbuf_addf(&local, " %%(objectname:short=7) ");
|
||||
strbuf_addf(&local, " %s ", obname.buf);
|
||||
|
||||
if (filter->verbose > 1)
|
||||
strbuf_addf(&local, "%%(if)%%(upstream)%%(then)[%s%%(upstream:short)%s%%(if)%%(upstream:track)"
|
||||
@ -346,10 +355,12 @@ static char *build_format(struct ref_filter *filter, int maxwidth, const char *r
|
||||
else
|
||||
strbuf_addf(&local, "%%(if)%%(upstream:track)%%(then)%%(upstream:track) %%(end)%%(contents:subject)");
|
||||
|
||||
strbuf_addf(&remote, "%s%%(align:%d,left)%s%%(refname:lstrip=2)%%(end)%s%%(if)%%(symref)%%(then) -> %%(symref:short)"
|
||||
"%%(else) %%(objectname:short=7) %%(contents:subject)%%(end)",
|
||||
strbuf_addf(&remote, "%s%%(align:%d,left)%s%%(refname:lstrip=2)%%(end)%s"
|
||||
"%%(if)%%(symref)%%(then) -> %%(symref:short)"
|
||||
"%%(else) %s %%(contents:subject)%%(end)",
|
||||
branch_get_color(BRANCH_COLOR_REMOTE), maxwidth, quote_literal_for_format(remote_prefix),
|
||||
branch_get_color(BRANCH_COLOR_RESET));
|
||||
branch_get_color(BRANCH_COLOR_RESET), obname.buf);
|
||||
strbuf_release(&obname);
|
||||
} else {
|
||||
strbuf_addf(&local, "%%(refname:lstrip=2)%s%%(if)%%(symref)%%(then) -> %%(symref:short)%%(end)",
|
||||
branch_get_color(BRANCH_COLOR_RESET));
|
||||
|
@ -207,6 +207,31 @@ test_expect_success 'git branch --list -d t should fail' '
|
||||
test_path_is_missing .git/refs/heads/t
|
||||
'
|
||||
|
||||
test_expect_success 'git branch --list -v with --abbrev' '
|
||||
test_when_finished "git branch -D t" &&
|
||||
git branch t &&
|
||||
git branch -v --list t >actual.default &&
|
||||
git branch -v --list --abbrev t >actual.abbrev &&
|
||||
test_cmp actual.default actual.abbrev &&
|
||||
|
||||
git branch -v --list --no-abbrev t >actual.noabbrev &&
|
||||
git branch -v --list --abbrev=0 t >actual.0abbrev &&
|
||||
test_cmp actual.noabbrev actual.0abbrev &&
|
||||
|
||||
git branch -v --list --abbrev=36 t >actual.36abbrev &&
|
||||
# how many hexdigits are used?
|
||||
read name objdefault rest <actual.abbrev &&
|
||||
read name obj36 rest <actual.36abbrev &&
|
||||
objfull=$(git rev-parse --verify t) &&
|
||||
|
||||
# are we really getting abbreviations?
|
||||
test "$obj36" != "$objdefault" &&
|
||||
expr "$obj36" : "$objdefault" >/dev/null &&
|
||||
test "$objfull" != "$obj36" &&
|
||||
expr "$objfull" : "$obj36" >/dev/null
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'git branch --column' '
|
||||
COLUMNS=81 git branch --column=column >actual &&
|
||||
cat >expected <<\EOF &&
|
||||
|
Loading…
Reference in New Issue
Block a user