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

Re: [PATCH v2 00/13] Declare merge-ort ready for general usage

From
Elijah Newren <newren@gmail.com>
Date
Mar 19, 2021, 23:21 UTC
Message-ID
<CABPp-BGm1R0OVywK50eMf9OWKv95nA+V2bzX6WLm2iFvfN_i9Q@mail.gmail.com>
In-Reply-To
<80cccc70-296a-05d2-94a8-0e005e4abe1d@gmail.com>
On Fri, Mar 19, 2021 at 6:09 AM Derrick Stolee <stolee@gmail.com> wrote:
Show 26 quoted lines
>
> On 3/17/2021 5:27 PM, Elijah Newren via GitGitGadget wrote:
> > This series depends on ort-perf-batch-10[1], and obsoletes the ort-remainder
> > topic[2] (that hadn't been picked up yet, so hopefully this doesn't cause
> > any confusion)
> >
> > With this series, merge-ort is ready for general usage -- it passes all
> > tests, passes dozens of tests that don't under merge-recursive, and
> > merge-ort is is already significantly faster than merge-recursive when
> > rename detection is involved. Users can select merge-ort by (a) passing
> > -sort to either git merge or git rebase, or (b) by setting pull.twohead=ort
> > [3], or (c) by setting GIT_TEST_MERGE_ALGORITHM=ort.
> >
> > Changes since v1:
> >
> >  * subsumed the ort-remainder topic (the first 10 patches), which has
> >    already been reviewed by both Ævar and Stolee[2].
> >  * the next two patches were the original v1, reviewed by Stolee
> >  * the final patch is new and adds testing.
>
> Sorry for the delay in looking at this. I read the two series before
> this, and found this to be a good union of them.
>
> My only question on the final patch is a two parter:
>
> 1. Did you mean to go this far?
At least, yes.
> 2. Did you want to go farther?

I like your suggestion in the other email; I'll resubmit to take advantage of it. :-)

> Mostly: how much do we want to prepare for ORT as the default
> strategy, at the expense of reducing testing of the recursive
> strategy?

We definitely should prepare for merge-ort as the default. There's a question of how soon the switch should be, but no question in my mind that we should move towards it.

What do others think is needed before we switch the default? Personally, I think there are three things:

1) merge-ort must handle the same cases that merge-recursive does
2) merge-ort must provide some benefit over merge-recursive
3) folks on the mailing list need to be comfortable with the default switch.
What would others add?

The first 2 conditions are already met, in spades. For all the code that calls merge-ort, merge-ort handles all the same cases, is more correct, more performant, and more featureful than merge-recursive. I was surprised by how smooth the roll-out was and has continued to be for internal users at $DAYJOB.

The only question is item #3. If it weren't for that, I'd say we should switch the default now, because AFAICT delaying the default switch will just delay when expanded testing occurs, and I have run out of other ways to expand testing. But I realize I'm the only one who knows that and is comfortable with that. So I'm not proposing a default switch yet; I want to hear feedback on what others want to see done before we switch. (At some point in the future, say another year or two, I'll ask what needs to be done before we *delete* merge-recursive.[ch]. But that's still off in the distant future.)

Previous: Derrick StoleeNext: Elijah Newren
Message 24 of 40 in “Declare merge-ort ready for general usage”
  1. 0/2 Declare merge-ort ready for general usageElijah Newren via GitGitGadget, Mar 16, 2021
  2. 2/2 t6423: mark remaining expected failure under merge-ort as suchElijah Newren via GitGitGadget, Mar 16, 2021
  3. 1/2 Revert "merge-ort: ignore the directory rename split conflict for now"Elijah Newren via GitGitGadget, Mar 16, 2021
  4. Derrick StoleeMar 16, 2021
  5. Elijah NewrenMar 16, 2021
  6. Derrick StoleeMar 16, 2021
  7. 00/13 Declare merge-ort ready for general usageElijah Newren via GitGitGadget, Mar 17, 2021
  8. 02/13 merge-ort: add a special minimal index just for renormalizationElijah Newren via GitGitGadget, Mar 17, 2021
  9. 05/13 merge-ort: support subtree shiftingElijah Newren via GitGitGadget, Mar 17, 2021
  10. 01/13 merge-ort: use STABLE_QSORT instead of QSORT where requiredElijah Newren via GitGitGadget, Mar 17, 2021
  11. 03/13 merge-ort: have ll_merge() use a special attr_index for renormalizationElijah Newren via GitGitGadget, Mar 17, 2021
  12. 07/13 merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entriesElijah Newren via GitGitGadget, Mar 17, 2021
  13. 08/13 t: mark several submodule merging tests as fixed under merge-ortElijah Newren via GitGitGadget, Mar 17, 2021
  14. 06/13 t6428: new test for SKIP_WORKTREE handling and conflictsElijah Newren via GitGitGadget, Mar 17, 2021
  15. 04/13 merge-ort: let renormalization change modify/delete into clean deleteElijah Newren via GitGitGadget, Mar 17, 2021
  16. 10/13 merge-recursive: add a bunch of FIXME comments documenting known bugsElijah Newren via GitGitGadget, Mar 17, 2021
  17. 09/13 merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflictElijah Newren via GitGitGadget, Mar 17, 2021
  18. 11/13 Revert "merge-ort: ignore the directory rename split conflict for now"Elijah Newren via GitGitGadget, Mar 17, 2021
  19. 12/13 t6423: mark remaining expected failure under merge-ort as suchElijah Newren via GitGitGadget, Mar 17, 2021
  20. 13/13 Add testing with merge-ort merge strategyElijah Newren via GitGitGadget, Mar 17, 2021
  21. Derrick StoleeMar 19, 2021
  22. Elijah NewrenMar 19, 2021
  23. Derrick StoleeMar 19, 2021
  24. Elijah NewrenMar 19, 2021
  25. Elijah NewrenMar 19, 2021
  26. 00/13 Declare merge-ort ready for general usageElijah Newren via GitGitGadget, Mar 20, 2021
  27. 03/13 merge-ort: have ll_merge() use a special attr_index for renormalizationElijah Newren via GitGitGadget, Mar 20, 2021
  28. 01/13 merge-ort: use STABLE_QSORT instead of QSORT where requiredElijah Newren via GitGitGadget, Mar 20, 2021
  29. 05/13 merge-ort: support subtree shiftingElijah Newren via GitGitGadget, Mar 20, 2021
  30. 02/13 merge-ort: add a special minimal index just for renormalizationElijah Newren via GitGitGadget, Mar 20, 2021
  31. 07/13 merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entriesElijah Newren via GitGitGadget, Mar 20, 2021
  32. 09/13 merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflictElijah Newren via GitGitGadget, Mar 20, 2021
  33. 04/13 merge-ort: let renormalization change modify/delete into clean deleteElijah Newren via GitGitGadget, Mar 20, 2021
  34. 06/13 t6428: new test for SKIP_WORKTREE handling and conflictsElijah Newren via GitGitGadget, Mar 20, 2021
  35. 11/13 Revert "merge-ort: ignore the directory rename split conflict for now"Elijah Newren via GitGitGadget, Mar 20, 2021
  36. 08/13 t: mark several submodule merging tests as fixed under merge-ortElijah Newren via GitGitGadget, Mar 20, 2021
  37. 12/13 t6423: mark remaining expected failure under merge-ort as suchElijah Newren via GitGitGadget, Mar 20, 2021
  38. 13/13 Add testing with merge-ort merge strategyElijah Newren via GitGitGadget, Mar 20, 2021
  39. 10/13 merge-recursive: add a bunch of FIXME comments documenting known bugsElijah Newren via GitGitGadget, Mar 20, 2021
  40. Derrick StoleeMar 20, 2021

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.