merge(3p/git): Merge git subtree at v2.29.2
This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
This commit is contained in:
parent
082c006c04
commit
f4609b896f
1485 changed files with 241535 additions and 109418 deletions
160
third_party/git/t/t7600-merge.sh
vendored
160
third_party/git/t/t7600-merge.sh
vendored
|
@ -29,15 +29,19 @@ Testing basic merge operations/option parsing.
|
|||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY"/lib-gpg.sh
|
||||
|
||||
printf '%s\n' 1 2 3 4 5 6 7 8 9 >file
|
||||
printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >file.1
|
||||
printf '%s\n' 1 2 3 4 '5 X' 6 7 8 9 >file.5
|
||||
printf '%s\n' 1 2 3 4 5 6 7 8 '9 X' >file.9
|
||||
printf '%s\n' 1 2 3 4 5 6 7 8 '9 Y' >file.9y
|
||||
printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >result.1
|
||||
printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 9 >result.1-5
|
||||
printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 '9 X' >result.1-5-9
|
||||
printf '%s\n' 1 2 3 4 5 6 7 8 '9 Z' >result.9z
|
||||
test_write_lines 1 2 3 4 5 6 7 8 9 >file
|
||||
cp file file.orig
|
||||
test_write_lines '1 X' 2 3 4 5 6 7 8 9 >file.1
|
||||
test_write_lines 1 2 '3 X' 4 5 6 7 8 9 >file.3
|
||||
test_write_lines 1 2 3 4 '5 X' 6 7 8 9 >file.5
|
||||
test_write_lines 1 2 3 4 5 6 7 8 '9 X' >file.9
|
||||
test_write_lines 1 2 3 4 5 6 7 8 '9 Y' >file.9y
|
||||
test_write_lines '1 X' 2 3 4 5 6 7 8 9 >result.1
|
||||
test_write_lines '1 X' 2 3 4 '5 X' 6 7 8 9 >result.1-5
|
||||
test_write_lines '1 X' 2 3 4 5 6 7 8 '9 X' >result.1-9
|
||||
test_write_lines '1 X' 2 3 4 '5 X' 6 7 8 '9 X' >result.1-5-9
|
||||
test_write_lines '1 X' 2 '3 X' 4 '5 X' 6 7 8 '9 X' >result.1-3-5-9
|
||||
test_write_lines 1 2 3 4 5 6 7 8 '9 Z' >result.9z
|
||||
|
||||
create_merge_msgs () {
|
||||
echo "Merge tag 'c2'" >msg.1-5 &&
|
||||
|
@ -81,7 +85,7 @@ verify_head () {
|
|||
}
|
||||
|
||||
verify_parents () {
|
||||
printf '%s\n' "$@" >parents.expected &&
|
||||
test_write_lines "$@" >parents.expected &&
|
||||
>parents.actual &&
|
||||
i=1 &&
|
||||
while test $i -le $#
|
||||
|
@ -95,7 +99,7 @@ verify_parents () {
|
|||
}
|
||||
|
||||
verify_mergeheads () {
|
||||
printf '%s\n' "$@" >mergehead.expected &&
|
||||
test_write_lines "$@" >mergehead.expected &&
|
||||
while read sha1 rest
|
||||
do
|
||||
git rev-parse $sha1
|
||||
|
@ -242,7 +246,7 @@ test_expect_success 'merge --squash c3 with c7' '
|
|||
# file
|
||||
EOF
|
||||
git cat-file commit HEAD >raw &&
|
||||
sed -e '1,/^$/d' raw >actual &&
|
||||
sed -e "1,/^$/d" raw >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
@ -264,7 +268,7 @@ test_expect_success 'merge c3 with c7 with commit.cleanup = scissors' '
|
|||
# file
|
||||
EOF
|
||||
git cat-file commit HEAD >raw &&
|
||||
sed -e '1,/^$/d' raw >actual &&
|
||||
sed -e "1,/^$/d" raw >actual &&
|
||||
test_i18ncmp expect actual
|
||||
'
|
||||
|
||||
|
@ -288,7 +292,7 @@ test_expect_success 'merge c3 with c7 with --squash commit.cleanup = scissors' '
|
|||
# file
|
||||
EOF
|
||||
git cat-file commit HEAD >raw &&
|
||||
sed -e '1,/^$/d' raw >actual &&
|
||||
sed -e "1,/^$/d" raw >actual &&
|
||||
test_i18ncmp expect actual
|
||||
'
|
||||
|
||||
|
@ -675,6 +679,134 @@ test_expect_success 'refresh the index before merging' '
|
|||
git merge c3
|
||||
'
|
||||
|
||||
test_expect_success 'merge with --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git merge --autostash c2 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
git show HEAD:file >merge-result &&
|
||||
test_cmp result.1-5 merge-result &&
|
||||
test_cmp result.1-5-9 file
|
||||
'
|
||||
|
||||
test_expect_success 'merge with merge.autoStash' '
|
||||
test_config merge.autoStash true &&
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git merge c2 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
git show HEAD:file >merge-result &&
|
||||
test_cmp result.1-5 merge-result &&
|
||||
test_cmp result.1-5-9 file
|
||||
'
|
||||
|
||||
test_expect_success 'fast-forward merge with --autostash' '
|
||||
git reset --hard c0 &&
|
||||
git merge-file file file.orig file.5 &&
|
||||
git merge --autostash c1 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
test_cmp result.1-5 file
|
||||
'
|
||||
|
||||
test_expect_success 'octopus merge with --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.3 &&
|
||||
git merge --autostash c2 c3 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
git show HEAD:file >merge-result &&
|
||||
test_cmp result.1-5-9 merge-result &&
|
||||
test_cmp result.1-3-5-9 file
|
||||
'
|
||||
|
||||
test_expect_success 'conflicted merge with --autostash, --abort restores stash' '
|
||||
git reset --hard c3 &&
|
||||
cp file.1 file &&
|
||||
test_must_fail git merge --autostash c7 &&
|
||||
git merge --abort 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
test_cmp file.1 file
|
||||
'
|
||||
|
||||
test_expect_success 'completed merge (git commit) with --no-commit and --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git diff >expect &&
|
||||
git merge --no-commit --autostash c2 &&
|
||||
git stash show -p MERGE_AUTOSTASH >actual &&
|
||||
test_cmp expect actual &&
|
||||
git commit 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
git show HEAD:file >merge-result &&
|
||||
test_cmp result.1-5 merge-result &&
|
||||
test_cmp result.1-5-9 file
|
||||
'
|
||||
|
||||
test_expect_success 'completed merge (git merge --continue) with --no-commit and --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git diff >expect &&
|
||||
git merge --no-commit --autostash c2 &&
|
||||
git stash show -p MERGE_AUTOSTASH >actual &&
|
||||
test_cmp expect actual &&
|
||||
git merge --continue 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
git show HEAD:file >merge-result &&
|
||||
test_cmp result.1-5 merge-result &&
|
||||
test_cmp result.1-5-9 file
|
||||
'
|
||||
|
||||
test_expect_success 'aborted merge (merge --abort) with --no-commit and --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git diff >expect &&
|
||||
git merge --no-commit --autostash c2 &&
|
||||
git stash show -p MERGE_AUTOSTASH >actual &&
|
||||
test_cmp expect actual &&
|
||||
git merge --abort 2>err &&
|
||||
test_i18ngrep "Applied autostash." err &&
|
||||
git diff >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'aborted merge (reset --hard) with --no-commit and --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git diff >expect &&
|
||||
git merge --no-commit --autostash c2 &&
|
||||
git stash show -p MERGE_AUTOSTASH >actual &&
|
||||
test_cmp expect actual &&
|
||||
git reset --hard 2>err &&
|
||||
test_i18ngrep "Autostash exists; creating a new stash entry." err &&
|
||||
git diff --exit-code
|
||||
'
|
||||
|
||||
test_expect_success 'quit merge with --no-commit and --autostash' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9 &&
|
||||
git diff >expect &&
|
||||
git merge --no-commit --autostash c2 &&
|
||||
git stash show -p MERGE_AUTOSTASH >actual &&
|
||||
test_cmp expect actual &&
|
||||
git diff HEAD >expect &&
|
||||
git merge --quit 2>err &&
|
||||
test_i18ngrep "Autostash exists; creating a new stash entry." err &&
|
||||
git diff HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'merge with conflicted --autostash changes' '
|
||||
git reset --hard c1 &&
|
||||
git merge-file file file.orig file.9y &&
|
||||
git diff >expect &&
|
||||
test_when_finished "test_might_fail git stash drop" &&
|
||||
git merge --autostash c3 2>err &&
|
||||
test_i18ngrep "Applying autostash resulted in conflicts." err &&
|
||||
git show HEAD:file >merge-result &&
|
||||
test_cmp result.1-9 merge-result &&
|
||||
git stash show -p >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
cat >expected.branch <<\EOF
|
||||
Merge branch 'c5-branch' (early part)
|
||||
EOF
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue