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

Re: [PATCH v2 13/13] Add testing with merge-ort merge strategy

From
Elijah Newren <newren@gmail.com>
Date
Mar 19, 2021, 15:21 UTC
Message-ID
<CABPp-BFiTCVZhyS551vUit=7bw4cnbU2zdBH0DZ7UKAoieDFFA@mail.gmail.com>
In-Reply-To
<6b619bd0-c924-274e-d8bb-3bb9c67a2625@gmail.com>
On Fri, Mar 19, 2021 at 6:05 AM Derrick Stolee <stolee@gmail.com> wrote:
Show 9 quoted lines
>
> On 3/17/2021 5:28 PM, Elijah Newren via GitGitGadget wrote:
> > From: Elijah Newren <newren@gmail.com>
> >
> > In preparation for switching from merge-recursive to merge-ort as the
> > default strategy, ensure that we are testing it.
>
> OK, so here we are testing it by default in CI, not just in that
> second round of optional environment variables. If that is what

Note quite; my patch adds testing of merge-ort with *-gcc variants on each of the major platforms, but still includes merge-recursive testing in the *-clang variants.

Show 11 quoted lines
> you intended, then this is the diff I was expecting:
>
> diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
> index a66b5e8c75a..c013e9e646a 100755
> --- a/ci/run-build-and-tests.sh
> +++ b/ci/run-build-and-tests.sh
> @@ -25,6 +25,7 @@ linux-gcc)
>         export GIT_TEST_ADD_I_USE_BUILTIN=1
>         export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
>         export GIT_TEST_WRITE_REV_INDEX=1
> +       export GIT_TEST_MERGE_STRATEGY=org
"ort", not "org".  :-)
Show 7 quoted lines
>         make test
>         ;;
>  linux-clang)
>
> However, if we want to be aggressive in adopting the ort strategy
> very soon, then your approach of testing more frequently is
> valuable.
I don't think testing limited to linux-gcc is very valuable:
* I've got opt-in volunteers (~60 of them) using it for the last half
year for their daily work (on Mac & Linux)
* For these volunteers, `git log -p` _also_ remerges every 2-parent
merge automatically (there's a --remerge-diff capability)
* We also had a bug where an internal script ('sparsify') looked for
files changed in "local-only" commits via `git log --name-only HEAD
--not --remotes=origin`.
* At least one person renamed their default remote to something other
than "origin"

The upshot is we not only have many testers using it for daily work, we had at least one guinea pig redoing every merge in his repository...and found a platform specific bug in some commit from years ago because of it.

In the last half year, I've only had three bug reports, none reported by more than one person:

* Platform specific merge issue triggered only in a commit in a
certain repository from years ago (fixed by first patch of this
series, the STABLE_QSORT() one)
* Mis-handling of present-despite-SKIP_WORKTREE file that *also* was
involved in a merge conflict (see t6428 addition in this series; note
that merge-recursive still fails it)
* A bug in the --remerge-diff results

So, at this point, beyond avoiding regressions the primary value I find in testing is in expanding it. windows is my big hole so more than anything I want ort testing there.

> Would it be worth setting GIT_TEST_MERGE_ALGORITHM=ort by default
> in test-lib.sh, too? That could help developers working on top of
> your topic avoid creating test failures that only show up in CI.

Actually, that sounds like a good idea, and we could just pick one or two special CI jobs to test with GIT_TEST_MERGE_STRATEGY=recursive.

Previous: Derrick StoleeNext: Derrick Stolee
Message 22 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.