Re: BUG Report: git branch ignore --no-abbrev flag
- From
- Guillaume Wenzek <guillaume.wenzek@gmail.com>
- Date
- Mar 9, 2017, 09:44 UTC
- Message-ID
- <CAAvNd=gAvONS-XP2vOLExdWiwDXTPbB5beiXikwdig7xC5OKow@mail.gmail.com>
- In-Reply-To
- <xmqqzigv1lc3.fsf@gitster.mtv.corp.google.com>
Thanks for looking into it,
The full version number is "2.12.0.246.ga2ecc84866" but I don't think that's an official number, I'm using my company (Google) apt repository.
The git package date is 2017/03/03 while previous version was from 2017/02/16, the commit you identified is actually between the two, so that may be it.
On 8 March 2017 at 22:59, Junio C Hamano <gitster@pobox.com> wrote:
Show 75 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Guillaume Wenzek <guillaume.wenzek@gmail.com> writes:
>>
>>> After updating to git 2.12.0 on Monday I noticed that the "git branch"
>>> wasn't behaving as usual.
>>
>> Are you sure you are trying 2.12? v2.12.0 and before should behave
>> the same way and honor --no-abbrev as far as I know.
>>
>> On the other hand, 'master' has 93e8cd8b ("Merge branch
>> 'kn/ref-filter-branch-list'", 2017-02-27), which seems to introduce
>> the regression.
>>
>> Karthik?
>
> I haven't fully checked if filter.abbrev is set correctly, but I
> noticed the output format is formulated without taking the value of
> filter.abbrev into account at all, so this is an attempt to fix
> that omission.
>
> I also notice that filter.abbrev is _ONLY_ used by builtin/branch.c and
> the actual ref-filter code does not have to know anything about it.
>
> We probably should eliminate filter.abbrev field from the structure
> and use a regular variable in builtin/branch.c and use it to pass
> the result of command line parsing from cmd_branch() down to
> build_format() as an argument.
>
> But that is outside the scope of regression fix.
>
>
> builtin/branch.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/branch.c b/builtin/branch.c
> index cbaa6d03c0..537c47811a 100644
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -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));