Re: BUG: attempt to trim too many characters
- From
Linus Torvalds <torvalds@linux-foundation.org>
- Date
- Sep 13, 2017, 04:29 UTC
- Message-ID
- <CA+55aFyyHAjEPx6V3X4i7LV-0VGwu2n288ysnpftP1Bx53EX5g@mail.gmail.com>
- In-Reply-To
- <20170905220300.isxbt5y5fd2scd6b@sigill.intra.peff.net>
Just reminding people that this issue would seem to still exist in current master..
It's trivial to show:
[torvalds@i7 git]$ git bisect start [torvalds@i7 git]$ git bisect bad master [torvalds@i7 git]$ git bisect good master~5 Bisecting: 23 revisions left to test after this (roughly 5 steps) [f35a1d75b5ecefaef7b1a8ec55543c82883df82f] Merge branch 'rs/t3700-clean-leftover' into maint [torvalds@i7 git]$ git rev-parse --bisect fatal: BUG: attempt to trim too many characters
(Note: I use "git rev-parse --bisect" to show it as an error on the command line, but normal people would obviously do "gitk --bisect" that then does that "git rev-parse" internally and shows a UI error box instead).
Linus
On Tue, Sep 5, 2017 at 3:03 PM, Jeff King <peff@peff.net> wrote:
Show 32 quoted lines
> On Tue, Sep 05, 2017 at 02:55:08PM -0700, Linus Torvalds wrote:
>
>> On Tue, Sep 5, 2017 at 2:50 PM, Jeff King <peff@peff.net> wrote:
>> >
>> > What version of git are you running? This should be fixed by 03df567fbf
>> > (for_each_bisect_ref(): don't trim refnames, 2017-06-18) which is in
>> > v2.14.
>>
>> I'm way more recent than 2.14.
>>
>> I'm at commit 238e487ea ("The fifth batch post 2.14")
>
> Ugh. Bitten again by the fact that rev-parse and revision.c implement
> the same things in subtly different ways.
>
> This probably fixes it:
>
> diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
> index 2bd28d3c08..9f24004c0a 100644
> --- a/builtin/rev-parse.c
> +++ b/builtin/rev-parse.c
> @@ -757,8 +757,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
> continue;
> }
> if (!strcmp(arg, "--bisect")) {
> - for_each_ref_in("refs/bisect/bad", show_reference, NULL);
> - for_each_ref_in("refs/bisect/good", anti_reference, NULL);
> + for_each_fullref_in("refs/bisect/bad", show_reference, NULL, 0);
> + for_each_fullref_in("refs/bisect/good", anti_reference, NULL, 0);
> continue;
> }
> if (opt_with_value(arg, "--branches", &arg)) {