Skip to content

Declare merge-ort ready for general usage

Elijah Newren via GitGitGadget git 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest13 patches 1 replyIn review
  2. v213 patches 5 repliesSuperseded
  3. v12 patches 3 repliesSuperseded

Changes in v3 from the cover letter

* changed the last patch to default testing to ort so people don't have to wait until CI for failures (but still keep linux-gcc testing merge-recursive so it retains coverage), as suggested by Stolee

[1]
https://lore.kernel.org/git/[email protected]/
[2]
https://lore.kernel.org/git/[email protected]/
[3] See commit 14c4586c2d ("merge,rebase,revert: select ort or recursive by config or environment", 2020-11-02)

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/13merge-ort: use STABLE_QSORT instead of QSORT where requiredmerge-ort.c+7 -10 replies
2/13merge-ort: add a special minimal index just for renormalizationmerge-ort.c+20 -00 replies
3/13merge-ort: have ll_merge() use a special attr_index for renormalizationmerge-ort.c+62 -20 replies
4/13merge-ort: let renormalization change modify/delete into clean deletemerge-ort.c+62 -20 replies
5/13merge-ort: support subtree shiftingmerge-ort.c+24 -00 replies
6/13t6428: new test for SKIP_WORKTREE handling and conflictst/t6428-merge-conflicts-sparse.sh+158 -00 replies
7/13merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entriesmerge-ort.c t/t6428-merge-conflicts-sparse.sh+32 -150 replies
8/13t: mark several submodule merging tests as fixed under merge-ortt/t3512-cherry-pick-submodule.sh t/t3513-revert-submodule.sh t/t5572-pull-submodule.sh +2 more+22 -90 replies
9/13merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflictbranch.c builtin/rebase.c merge-ort.c +3 more+20 -00 replies
10/13merge-recursive: add a bunch of FIXME comments documenting known bugsmerge-recursive.c+37 -00 replies
11/13Revert "merge-ort: ignore the directory rename split conflict for now"merge-ort.c+1 -120 replies
12/13t6423: mark remaining expected failure under merge-ort as sucht/t6423-merge-rename-directories.sh+1 -10 replies
13/13Add testing with merge-ort merge strategyci/run-build-and-tests.sh t/test-lib.sh+3 -00 replies

Reviews trailers per patch

None of the 13 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchDerrick Stolee
SeriesR-b
1/13
2/13
3/13
4/13
5/13
6/13
7/13
8/13
9/13
10/13
11/13
12/13
13/13

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v3 thread

Cover letter [PATCH v3 00/13] Declare merge-ort ready for general usage

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 v2:

* changed the last patch to default testing to ort so people don't have to wait until CI for failures (but still keep linux-gcc testing merge-recursive so it retains coverage), as suggested by Stolee

[1]
https://lore.kernel.org/git/[email protected]/
[2]
https://lore.kernel.org/git/[email protected]/
[3] See commit 14c4586c2d ("merge,rebase,revert: select ort or recursive by config or environment", 2020-11-02)

Elijah Newren (13):
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for
renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such Add testing with merge-ort merge strategy

 branch.c                                      |   1 +
 builtin/rebase.c                              |   1 +
 ci/run-build-and-tests.sh                     |   1 +
 merge-ort.c                                   | 242 ++++++++++++++++--
 merge-recursive.c                             |  37 +++
 path.c                                        |   1 +
 path.h                                        |   2 +
 sequencer.c                                   |   5 +
 t/t3512-cherry-pick-submodule.sh              |   7 +-
 t/t3513-revert-submodule.sh                   |   5 +-
 t/t5572-pull-submodule.sh                     |   7 +-
 t/t6423-merge-rename-directories.sh           |   2 +-
 t/t6428-merge-conflicts-sparse.sh             | 158 ++++++++++++
 t/t6437-submodule-merge.sh                    |   5 +-
 t/t6438-submodule-directory-file-conflicts.sh |   7 +-
 t/test-lib.sh                                 |   2 +
 16 files changed, 445 insertions(+), 38 deletions(-)
 create mode 100755 t/t6428-merge-conflicts-sparse.sh

base-commit: ac0ba91ce275227f5df8f16fb986308ff88b198b
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-905%2Fgitgitgadget%2Fort-readiness-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-905/gitgitgadget/ort-readiness-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/905

Range-diff vs v2:

  1:  e223f842748c =  1:  e223f842748c merge-ort: use STABLE_QSORT instead of QSORT where required
  2:  6d34cc466bd5 =  2:  6d34cc466bd5 merge-ort: add a special minimal index just for renormalization
  3:  4ff23d2f52a0 =  3:  4ff23d2f52a0 merge-ort: have ll_merge() use a special attr_index for renormalization
  4:  c1c9605c1932 =  4:  c1c9605c1932 merge-ort: let renormalization change modify/delete into clean delete
  5:  41fffcdd3b78 =  5:  41fffcdd3b78 merge-ort: support subtree shifting
  6:  6aec1f499b80 =  6:  6aec1f499b80 t6428: new test for SKIP_WORKTREE handling and conflicts
  7:  fe3baf696785 =  7:  fe3baf696785 merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
  8:  f9325647a9fc =  8:  f9325647a9fc t: mark several submodule merging tests as fixed under merge-ort
  9:  4a79e6134691 =  9:  4a79e6134691 merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
 10:  a37979454069 = 10:  a37979454069 merge-recursive: add a bunch of FIXME comments documenting known bugs
 11:  6bda855f2980 = 11:  6bda855f2980 Revert "merge-ort: ignore the directory rename split conflict for now"
 12:  1c6361c9b88a = 12:  1c6361c9b88a t6423: mark remaining expected failure under merge-ort as such
 13:  d8536f56ab29 <  -:  ------------ Add testing with merge-ort merge strategy
  -:  ------------ > 13:  c2d2a1ccaea7 Add testing with merge-ort merge strategy
Signature · 1 line
gitgitgadget