git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] rebase: mark the C reimplementation as an experimental opt-in feature (was Re: [ANNOUNCE] Git v2.20.0-rc1)

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 28, 2018, 12:21 UTC
Message-ID
<87bm69z939.fsf@evledraar.gmail.com>
In-Reply-To
<nycvar.QRO.7.76.6.1811281015360.41@tvgsbejvaqbjf.bet>
On Wed, Nov 28 2018, Johannes Schindelin wrote:
Show 75 quoted lines
> Hi Jonathan,
>
> On Tue, 27 Nov 2018, Jonathan Nieder wrote:
>
>> At https://bugs.debian.org/914695 is a report of a test regression in
>> an outside project that is very likely to have been triggered by the
>> new faster rebase code.
>
> From looking through that log.gz (without having a clue where the test
> code lives, so I cannot say what it is supposed to do, and also: this is
> the first time I hear about dgit...), it would appear that this must be a
> regression in the reflog messages produced by `git rebase`.
>
>> The issue has not been triaged, so I don't know yet whether it's a
>> problem in rebase-in-c or a manifestation of a bug in the test.
>
> It ends thusly:
>
> -- snip --
> [...]
> + git reflog
> + egrep 'debrebase new-upstream.*checkout'
> + test 1 = 0
> + t-report-failure
> + set +x
> TEST FAILED
> -- snap --
>
> Which makes me think that the reflog we produce in *some* code path that
> originally called `git checkout` differs from the scripted rebase's
> generated reflog.
>
>> That said, Google has been running with the new rebase since ~1 month
>> ago when it became the default, with no issues reported by users.  As a
>> result, I am confident that it can cope with what most users of "next"
>> throw at it, which means that if we are to find more issues to polish it
>> better, it will need all the exposure it can get.
>
> Right. And there are a few weeks before the holidays, which should give me
> time to fix whatever bugs are discovered (I only half mind being the only
> one who fixes these bugs).
>
>> In the Google deployment, we will keep using rebase-in-c even if it
>> gets disabled by default, in order to help with that.
>>
>> From the Debian point of view, it's only a matter of time before
>> rebase-in-c becomes the default: even if it's not the default in 2.20,
>> it would presumably be so in 2.21 or 2.22.  That means the community's
>> attention when resolving security and reliability bugs would be on the
>> rebase-in-c implementation.  As a result, the Debian package will most
>> likely enable rebase-in-c by default even if upstream disables it, in
>> order to increase the package's shelf life (i.e. to ease the
>> maintenance burden of supporting whichever version of the package ends
>> up in the next Debian stable).
>>
>> So with either hat on, it doesn't matter whether you apply this patch
>> upstream.
>>
>> Having two pretty different deployments end up with the same
>> conclusion leads me to suspect that it's best for upstream not to
>> apply the revert patch, unless either
>>
>>   (a) we have a concrete regression to address and then try again, or
>>   (b) we have a test or other plan to follow before trying again.
>
> In this instance, I am more a fan of the "let's move fast and break
> things, then move even faster fixing them" approach.
>
> Besides, the bug that Ævar discovered was a bug already in the scripted
> rebase, but hidden by yet another bug (the missing error checking).
>
> I get the pretty firm impression that the common code paths are now pretty
> robust, and only lesser-exercised features may expose a bug (or
> regression, as in the case of the reflogs, where one could argue that the
> exact reflog message is not something we promise not to fiddle with).

Since I raised this 'should we hold off?' I thought I'd chime in and say that I'm fine with going along with what you suggest and having the builtin as the default in the final. IOW not merge jc/postpone-rebase-in-c down.

Previous: Johannes SchindelinNext: Ævar Arnfjörð Bjarmason
Message 23 of 53 in “[ANNOUNCE] Git v2.20.0-rc1”
  1. Junio C HamanoNov 21, 2018
  2. Ævar Arnfjörð BjarmasonNov 22, 2018
  3. Eric SunshineNov 22, 2018
  4. 0/2 format-patch: pre-2.20 range-diff regression fixÆvar Arnfjörð Bjarmason, Nov 22, 2018
  5. 1/2 format-patch: add a more exhaustive --range-diff testÆvar Arnfjörð Bjarmason, Nov 22, 2018
  6. 2/2 format-patch: don't include --stat with --range-diff outputÆvar Arnfjörð Bjarmason, Nov 22, 2018
  7. Junio C HamanoNov 24, 2018
  8. Junio C HamanoNov 24, 2018
  9. Junio C HamanoNov 24, 2018
  10. Ævar Arnfjörð BjarmasonNov 24, 2018
  11. Ævar Arnfjörð BjarmasonNov 24, 2018
  12. Junio C HamanoNov 25, 2018
  13. rebase: mark the C reimplementation as an experimental opt-in feature (was Re: [ANNOUNCE] Git v2.20.0-rc1)Junio C Hamano, Nov 26, 2018
  14. Junio C HamanoNov 26, 2018
  15. Elijah NewrenNov 26, 2018
  16. Johannes SchindelinNov 26, 2018
  17. Johannes SchindelinNov 26, 2018
  18. Junio C HamanoNov 27, 2018
  19. Junio C HamanoNov 28, 2018
  20. Jonathan NiederNov 28, 2018
  21. Johannes SchindelinNov 28, 2018
  22. Johannes SchindelinNov 28, 2018
  23. Ævar Arnfjörð BjarmasonNov 28, 2018
  24. 2/2 format-patch: allow for independent diff & range-diff optionsÆvar Arnfjörð Bjarmason, Nov 28, 2018
  25. 0/2 format-patch: fix root cause of recent regressionÆvar Arnfjörð Bjarmason, Nov 28, 2018
  26. 1/2 format-patch: add test for --range-diff diff outputÆvar Arnfjörð Bjarmason, Nov 28, 2018
  27. Junio C HamanoNov 29, 2018
  28. Junio C HamanoNov 29, 2018
  29. Johannes SchindelinNov 29, 2018
  30. Ævar Arnfjörð BjarmasonNov 29, 2018
  31. Johannes SchindelinNov 29, 2018
  32. Johannes SchindelinNov 29, 2018
  33. Ævar Arnfjörð BjarmasonNov 29, 2018
  34. Ian JacksonNov 29, 2018
  35. Johannes SchindelinNov 29, 2018
  36. Johannes SchindelinNov 29, 2018
  37. Ian JacksonNov 29, 2018
  38. Ævar Arnfjörð BjarmasonNov 29, 2018
  39. Johannes SchindelinNov 29, 2018
  40. Ian JacksonNov 29, 2018
  41. Johannes SchindelinNov 29, 2018
  42. Junio C HamanoNov 30, 2018
  43. format-patch: do not let its diff-options affect --range-diff (was Re: [PATCH 2/2] format-patch: allow for independent diff & range-diff options)Junio C Hamano, Nov 30, 2018
  44. Junio C HamanoNov 30, 2018
  45. Ævar Arnfjörð BjarmasonNov 30, 2018
  46. Eric SunshineNov 30, 2018
  47. Eric SunshineNov 30, 2018
  48. Johannes SchindelinNov 30, 2018
  49. Martin ÅgrenDec 3, 2018
  50. range-diff: always pass at least minimal diff optionsMartin Ågren, Dec 3, 2018
  51. range-diff: always pass at least minimal diff optionsEric Sunshine, Dec 3, 2018
  52. Junio C HamanoDec 4, 2018
  53. Martin ÅgrenDec 4, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.