merge-tree.c: allow specifying the merge-base when --stdin is passed
The previous commit added a `--merge-base` option in order to allow using a specified merge-base for the merge. Extend the input accepted by `--stdin` to also allow a specified merge-base with each merge requested. For example: printf "<b3> -- <b1> <b2>" | git merge-tree --stdin does a merge of b1 and b2, and uses b3 as the merge-base. Signed-off-by: Kyle Zhao <kylezhao@tencent.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
@ -860,6 +860,13 @@ test_expect_success '--stdin with both a successful and a conflicted merge' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
||||
test_expect_success '--merge-base is incompatible with --stdin' '
|
||||
test_must_fail git merge-tree --merge-base=side1 --stdin 2>expect &&
|
||||
|
||||
grep "^fatal: --merge-base is incompatible with --stdin" expect
|
||||
'
|
||||
|
||||
# specify merge-base as parent of branch2
|
||||
# git merge-tree --write-tree --merge-base=c2 c1 c3
|
||||
# Commit c1: add file1
|
||||
@ -887,4 +894,32 @@ test_expect_success 'specify merge-base as parent of branch2' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
# Since the earlier tests have verified that individual merge-tree calls
|
||||
# are doing the right thing, this test case is only used to verify that
|
||||
# we can also trigger merges via --stdin, and that when we do we get
|
||||
# the same answer as running a bunch of separate merges.
|
||||
|
||||
test_expect_success 'check the input format when --stdin is passed' '
|
||||
test_when_finished "rm -rf repo" &&
|
||||
git init repo &&
|
||||
test_commit -C repo c1 &&
|
||||
test_commit -C repo c2 &&
|
||||
test_commit -C repo c3 &&
|
||||
printf "c1 c3\nc2 -- c1 c3\nc2 c3" | git -C repo merge-tree --stdin >actual &&
|
||||
|
||||
printf "1\0" >expect &&
|
||||
git -C repo merge-tree --write-tree -z c1 c3 >>expect &&
|
||||
printf "\0" >>expect &&
|
||||
|
||||
printf "1\0" >>expect &&
|
||||
git -C repo merge-tree --write-tree -z --merge-base=c2 c1 c3 >>expect &&
|
||||
printf "\0" >>expect &&
|
||||
|
||||
printf "1\0" >>expect &&
|
||||
git -C repo merge-tree --write-tree -z c2 c3 >>expect &&
|
||||
printf "\0" >>expect &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user