-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'jn/merge-custom-no-trivial'
* jn/merge-custom-no-trivial: t7606: Avoid using head as a file name merge: let custom strategies intervene in trivial merges t7606 (merge-theirs): modernize style
- Loading branch information
Showing
2 changed files
with
71 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,93 @@ | ||
#!/bin/sh | ||
|
||
test_description='git merge | ||
test_description="git merge | ||
Testing a custom strategy.' | ||
Testing a custom strategy. | ||
* (HEAD, master) Merge commit 'c3' | ||
|\ | ||
| * (tag: c3) c3 | ||
* | (tag: c1) c1 | ||
|/ | ||
| * tag: c2) c2 | ||
|/ | ||
* (tag: c0) c0 | ||
" | ||
|
||
. ./test-lib.sh | ||
|
||
cat >git-merge-theirs <<EOF | ||
#!$SHELL_PATH | ||
eval git read-tree --reset -u \\\$\$# | ||
EOF | ||
chmod +x git-merge-theirs | ||
PATH=.:$PATH | ||
export PATH | ||
test_expect_success 'set up custom strategy' ' | ||
cat >git-merge-theirs <<-EOF && | ||
#!$SHELL_PATH | ||
eval git read-tree --reset -u \\\$\$# | ||
EOF | ||
chmod +x git-merge-theirs && | ||
PATH=.:$PATH && | ||
export PATH | ||
' | ||
|
||
test_expect_success 'setup' ' | ||
echo c0 >c0.c && | ||
git add c0.c && | ||
git commit -m c0 && | ||
git tag c0 && | ||
echo c1 >c1.c && | ||
git add c1.c && | ||
git commit -m c1 && | ||
git tag c1 && | ||
git reset --hard c0 && | ||
test_commit c0 c0.c && | ||
test_commit c1 c1.c && | ||
git reset --keep c0 && | ||
echo c1c1 >c1.c && | ||
echo c2 >c2.c && | ||
git add c1.c c2.c && | ||
git commit -m c2 && | ||
git tag c2 | ||
git add c1.c && | ||
test_commit c2 c2.c && | ||
git reset --keep c0 && | ||
test_commit c3 c3.c | ||
' | ||
|
||
test_expect_success 'merge c2 with a custom strategy' ' | ||
git reset --hard c1 && | ||
git rev-parse c1 >head.old && | ||
git rev-parse c2 >second-parent.expected && | ||
git rev-parse c2^{tree} >tree.expected && | ||
git merge -s theirs c2 && | ||
test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" && | ||
test "$(git rev-parse c1)" = "$(git rev-parse HEAD^1)" && | ||
test "$(git rev-parse c2)" = "$(git rev-parse HEAD^2)" && | ||
test "$(git rev-parse c2^{tree})" = "$(git rev-parse HEAD^{tree})" && | ||
git rev-parse HEAD >head.new && | ||
git rev-parse HEAD^1 >first-parent && | ||
git rev-parse HEAD^2 >second-parent && | ||
git rev-parse HEAD^{tree} >tree && | ||
git update-index --refresh && | ||
git diff --exit-code && | ||
git diff --exit-code c2 HEAD && | ||
git diff --exit-code c2 && | ||
! test_cmp head.old head.new && | ||
test_cmp head.old first-parent && | ||
test_cmp second-parent.expected second-parent && | ||
test_cmp tree.expected tree && | ||
test -f c0.c && | ||
grep c1c1 c1.c && | ||
test -f c2.c | ||
' | ||
|
||
test_expect_success 'trivial merge with custom strategy' ' | ||
git reset --hard c1 && | ||
git rev-parse c1 >head.old && | ||
git rev-parse c3 >second-parent.expected && | ||
git rev-parse c3^{tree} >tree.expected && | ||
git merge -s theirs c3 && | ||
git rev-parse HEAD >head.new && | ||
git rev-parse HEAD^1 >first-parent && | ||
git rev-parse HEAD^2 >second-parent && | ||
git rev-parse HEAD^{tree} >tree && | ||
git update-index --refresh && | ||
git diff --exit-code && | ||
git diff --exit-code c3 HEAD && | ||
git diff --exit-code c3 && | ||
! test_cmp head.old head.new && | ||
test_cmp head.old first-parent && | ||
test_cmp second-parent.expected second-parent && | ||
test_cmp tree.expected tree && | ||
test -f c0.c && | ||
! test -e c1.c && | ||
test -f c3.c | ||
' | ||
|
||
test_done |