Web lists-archives.com

Re: BUG Report: git branch ignore --no-abbrev flag




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@xxxxxxxxx> wrote:
> Junio C Hamano <gitster@xxxxxxxxx> writes:
>
>> Guillaume Wenzek <guillaume.wenzek@xxxxxxxxx> 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));