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:
Vincent Ambo 2020-11-21 19:20:35 +01:00
parent 082c006c04
commit f4609b896f
1485 changed files with 241535 additions and 109418 deletions

View file

@ -7,6 +7,18 @@ test_description='Test git stash'
. ./test-lib.sh
diff_cmp () {
for i in "$1" "$2"
do
sed -e 's/^index 0000000\.\.[0-9a-f]*/index 0000000..1234567/' \
-e 's/^index [0-9a-f]*\.\.[0-9a-f]*/index 1234567..89abcde/' \
-e 's/^index [0-9a-f]*,[0-9a-f]*\.\.[0-9a-f]*/index 1234567,7654321..89abcde/' \
"$i" >"$i.compare" || return 1
done &&
test_cmp "$1.compare" "$2.compare" &&
rm -f "$1.compare" "$2.compare"
}
test_expect_success 'stash some dirty working directory' '
echo 1 >file &&
git add file &&
@ -36,7 +48,7 @@ EOF
test_expect_success 'parents of stash' '
test $(git rev-parse stash^) = $(git rev-parse HEAD) &&
git diff stash^2..stash >output &&
test_cmp expect output
diff_cmp expect output
'
test_expect_success 'applying bogus stash does nothing' '
@ -210,13 +222,13 @@ test_expect_success 'stash branch' '
test refs/heads/stashbranch = $(git symbolic-ref HEAD) &&
test $(git rev-parse HEAD) = $(git rev-parse master^) &&
git diff --cached >output &&
test_cmp expect output &&
diff_cmp expect output &&
git diff >output &&
test_cmp expect1 output &&
diff_cmp expect1 output &&
git add file &&
git commit -m alternate\ second &&
git diff master..stashbranch >output &&
test_cmp output expect2 &&
diff_cmp output expect2 &&
test 0 = $(git stash list | wc -l)
'
@ -232,8 +244,11 @@ test_expect_success 'save -q is quiet' '
test_must_be_empty output.out
'
test_expect_success 'pop -q is quiet' '
test_expect_success 'pop -q works and is quiet' '
git stash pop -q >output.out 2>&1 &&
echo bar >expect &&
git show :file >actual &&
test_cmp expect actual &&
test_must_be_empty output.out
'
@ -242,6 +257,8 @@ test_expect_success 'pop -q --index works and is quiet' '
git add file &&
git stash save --quiet &&
git stash pop -q --index >output.out 2>&1 &&
git diff-files file2 >file2.diff &&
test_must_be_empty file2.diff &&
test foo = "$(git show :file)" &&
test_must_be_empty output.out
'
@ -268,6 +285,11 @@ test_expect_success 'stash --no-keep-index' '
test bar,bar2 = $(cat file),$(cat file2)
'
test_expect_success 'dont assume push with non-option args' '
test_must_fail git stash -q drop 2>err &&
test_i18ngrep -e "subcommand wasn'\''t specified; '\''push'\'' can'\''t be assumed due to unexpected token '\''drop'\''" err
'
test_expect_success 'stash --invalid-option' '
echo bar5 >file &&
echo bar6 >file2 &&
@ -577,7 +599,7 @@ test_expect_success 'stash show -p - stashes on stack, stash-like argument' '
+bar
EOF
git stash show -p ${STASH_ID} >actual &&
test_cmp expected actual
diff_cmp expected actual
'
test_expect_success 'stash show - no stashes on stack, stash-like argument' '
@ -609,7 +631,7 @@ test_expect_success 'stash show -p - no stashes on stack, stash-like argument' '
+foo
EOF
git stash show -p ${STASH_ID} >actual &&
test_cmp expected actual
diff_cmp expected actual
'
test_expect_success 'stash show --patience shows diff' '
@ -627,7 +649,7 @@ test_expect_success 'stash show --patience shows diff' '
+foo
EOF
git stash show --patience ${STASH_ID} >actual &&
test_cmp expected actual
diff_cmp expected actual
'
test_expect_success 'drop: fail early if specified stash is not a stash ref' '
@ -791,7 +813,7 @@ test_expect_success 'stash where working directory contains "HEAD" file' '
git diff-index --cached --quiet HEAD &&
test "$(git rev-parse stash^)" = "$(git rev-parse HEAD)" &&
git diff stash^..stash >output &&
test_cmp expect output
diff_cmp expect output
'
test_expect_success 'store called with invalid commit' '
@ -847,7 +869,7 @@ test_expect_success 'stash list implies --first-parent -m' '
+working
EOF
git stash list --format=%gd -p >actual &&
test_cmp expect actual
diff_cmp expect actual
'
test_expect_success 'stash list --cc shows combined diff' '
@ -864,7 +886,7 @@ test_expect_success 'stash list --cc shows combined diff' '
++working
EOF
git stash list --format=%gd -p --cc >actual &&
test_cmp expect actual
diff_cmp expect actual
'
test_expect_success 'stash is not confused by partial renames' '
@ -1241,4 +1263,45 @@ test_expect_success 'stash --keep-index with file deleted in index does not resu
test_path_is_missing to-remove
'
test_expect_success 'stash apply should succeed with unmodified file' '
echo base >file &&
git add file &&
git commit -m base &&
# now stash a modification
echo modified >file &&
git stash &&
# make the file stat dirty
cp file other &&
mv other file &&
git stash apply
'
test_expect_success 'stash handles skip-worktree entries nicely' '
test_commit A &&
echo changed >A.t &&
git add A.t &&
git update-index --skip-worktree A.t &&
rm A.t &&
git stash &&
git rev-parse --verify refs/stash:A.t
'
test_expect_success 'stash -c stash.useBuiltin=false warning ' '
expected="stash.useBuiltin support has been removed" &&
git -c stash.useBuiltin=false stash 2>err &&
test_i18ngrep "$expected" err &&
env GIT_TEST_STASH_USE_BUILTIN=false git stash 2>err &&
test_i18ngrep "$expected" err &&
git -c stash.useBuiltin=true stash 2>err &&
test_must_be_empty err &&
env GIT_TEST_STASH_USE_BUILTIN=true git stash 2>err &&
test_must_be_empty err
'
test_done