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
94
third_party/git/t/t7400-submodule-basic.sh
vendored
94
third_party/git/t/t7400-submodule-basic.sh
vendored
|
@ -55,6 +55,21 @@ test_expect_success 'add aborts on repository with no commits' '
|
|||
test_i18ncmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'status should ignore inner git repo when not added' '
|
||||
rm -fr inner &&
|
||||
mkdir inner &&
|
||||
(
|
||||
cd inner &&
|
||||
git init &&
|
||||
>t &&
|
||||
git add t &&
|
||||
git commit -m "initial"
|
||||
) &&
|
||||
test_must_fail git submodule status inner 2>output.err &&
|
||||
rm -fr inner &&
|
||||
test_i18ngrep "^error: .*did not match any file(s) known to git" output.err
|
||||
'
|
||||
|
||||
test_expect_success 'setup - repository in init subdirectory' '
|
||||
mkdir init &&
|
||||
(
|
||||
|
@ -156,9 +171,11 @@ test_expect_success 'submodule add to .gitignored path fails' '
|
|||
(
|
||||
cd addtest-ignore &&
|
||||
cat <<-\EOF >expect &&
|
||||
The following path is ignored by one of your .gitignore files:
|
||||
The following paths are ignored by one of your .gitignore files:
|
||||
submod
|
||||
Use -f if you really want to add it.
|
||||
hint: Use -f if you really want to add them.
|
||||
hint: Turn this message off by running
|
||||
hint: "git config advice.addIgnoredFile false"
|
||||
EOF
|
||||
# Does not use test_commit due to the ignore
|
||||
echo "*" > .gitignore &&
|
||||
|
@ -191,6 +208,17 @@ test_expect_success 'submodule add to reconfigure existing submodule with --forc
|
|||
)
|
||||
'
|
||||
|
||||
test_expect_success 'submodule add relays add --dry-run stderr' '
|
||||
test_when_finished "rm -rf addtest/.git/index.lock" &&
|
||||
(
|
||||
cd addtest &&
|
||||
: >.git/index.lock &&
|
||||
! git submodule add "$submodurl" sub-while-locked 2>output.err &&
|
||||
test_i18ngrep "^fatal: .*index\.lock" output.err &&
|
||||
test_path_is_missing sub-while-locked
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'submodule add --branch' '
|
||||
echo "refs/heads/initial" >expect-head &&
|
||||
cat <<-\EOF >expect-heads &&
|
||||
|
@ -356,6 +384,28 @@ test_expect_success 'status should only print one line' '
|
|||
test_line_count = 1 lines
|
||||
'
|
||||
|
||||
test_expect_success 'status from subdirectory should have the same SHA1' '
|
||||
test_when_finished "rmdir addtest/subdir" &&
|
||||
(
|
||||
cd addtest &&
|
||||
mkdir subdir &&
|
||||
git submodule status >output &&
|
||||
awk "{print \$1}" <output >expect &&
|
||||
cd subdir &&
|
||||
git submodule status >../output &&
|
||||
awk "{print \$1}" <../output >../actual &&
|
||||
test_cmp ../expect ../actual &&
|
||||
git -C ../submod checkout HEAD^ &&
|
||||
git submodule status >../output &&
|
||||
awk "{print \$1}" <../output >../actual2 &&
|
||||
cd .. &&
|
||||
git submodule status >output &&
|
||||
awk "{print \$1}" <output >expect2 &&
|
||||
test_cmp expect2 actual2 &&
|
||||
! test_cmp actual actual2
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'setup - fetch commit name from submodule' '
|
||||
rev1=$(cd .subrepo && git rev-parse HEAD) &&
|
||||
printf "rev1: %s\n" "$rev1" &&
|
||||
|
@ -377,6 +427,14 @@ test_expect_success 'init should register submodule url in .git/config' '
|
|||
test_cmp expect url
|
||||
'
|
||||
|
||||
test_expect_success 'status should still be "missing" after initializing' '
|
||||
rm -fr init &&
|
||||
mkdir init &&
|
||||
git submodule status >lines &&
|
||||
rm -fr init &&
|
||||
grep "^-$rev1" lines
|
||||
'
|
||||
|
||||
test_failure_with_unknown_submodule () {
|
||||
test_must_fail git submodule $1 no-such-submodule 2>output.err &&
|
||||
test_i18ngrep "^error: .*no-such-submodule" output.err
|
||||
|
@ -527,7 +585,6 @@ test_expect_success 'update --init' '
|
|||
test_must_fail git config submodule.example.url &&
|
||||
|
||||
git submodule update init 2> update.out &&
|
||||
cat update.out &&
|
||||
test_i18ngrep "not initialized" update.out &&
|
||||
test_must_fail git rev-parse --resolve-git-dir init/.git &&
|
||||
|
||||
|
@ -545,7 +602,6 @@ test_expect_success 'update --init from subdirectory' '
|
|||
(
|
||||
cd sub &&
|
||||
git submodule update ../init 2>update.out &&
|
||||
cat update.out &&
|
||||
test_i18ngrep "not initialized" update.out &&
|
||||
test_must_fail git rev-parse --resolve-git-dir ../init/.git &&
|
||||
|
||||
|
@ -882,7 +938,7 @@ test_expect_success 'submodule add --name allows to replace a submodule with ano
|
|||
echo "repo" >expect &&
|
||||
test_must_fail git config -f .gitmodules submodule.repo.path &&
|
||||
git config -f .gitmodules submodule.repo_new.path >actual &&
|
||||
test_cmp expect actual&&
|
||||
test_cmp expect actual &&
|
||||
echo "$submodurl/repo" >expect &&
|
||||
test_must_fail git config -f .gitmodules submodule.repo.url &&
|
||||
echo "$submodurl/bare.git" >expect &&
|
||||
|
@ -954,7 +1010,7 @@ test_expect_success 'submodule add with an existing name fails unless forced' '
|
|||
test -d repo &&
|
||||
echo "repo" >expect &&
|
||||
git config -f .gitmodules submodule.repo_new.path >actual &&
|
||||
test_cmp expect actual&&
|
||||
test_cmp expect actual &&
|
||||
echo "$submodurl/repo.git" >expect &&
|
||||
git config -f .gitmodules submodule.repo_new.url >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
@ -1175,7 +1231,7 @@ test_expect_success 'submodule helper list is not confused by common prefixes' '
|
|||
git submodule add /dir1/b dir1/b &&
|
||||
git submodule add /dir2/b dir2/b &&
|
||||
git commit -m "first submodule commit" &&
|
||||
git submodule--helper list dir1/b |cut -c51- >actual &&
|
||||
git submodule--helper list dir1/b | cut -f 2 >actual &&
|
||||
echo "dir1/b" >expect &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
@ -1204,7 +1260,7 @@ test_expect_success 'submodule update --init with a specification' '
|
|||
pwd=$(pwd) &&
|
||||
git clone file://"$pwd"/multisuper multisuper_clone &&
|
||||
git -C multisuper_clone submodule update --init . ":(exclude)sub0" &&
|
||||
git -C multisuper_clone submodule status |cut -c 1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
@ -1215,7 +1271,7 @@ test_expect_success 'submodule update --init with submodule.active set' '
|
|||
git -C multisuper_clone config submodule.active "." &&
|
||||
git -C multisuper_clone config --add submodule.active ":(exclude)sub0" &&
|
||||
git -C multisuper_clone submodule update --init &&
|
||||
git -C multisuper_clone submodule status |cut -c 1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
@ -1234,7 +1290,7 @@ test_expect_success 'submodule update and setting submodule.<name>.active' '
|
|||
-sub3
|
||||
EOF
|
||||
git -C multisuper_clone submodule update &&
|
||||
git -C multisuper_clone submodule status |cut -c 1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
@ -1251,12 +1307,12 @@ test_expect_success 'clone active submodule without submodule url set' '
|
|||
git submodule update &&
|
||||
git submodule status >actual_raw &&
|
||||
|
||||
cut -c 1,43- actual_raw >actual &&
|
||||
cut -d" " -f3- actual_raw >actual &&
|
||||
cat >expect <<-\EOF &&
|
||||
sub0 (test2)
|
||||
sub1 (test2)
|
||||
sub2 (test2)
|
||||
sub3 (test2)
|
||||
sub0 (test2)
|
||||
sub1 (test2)
|
||||
sub2 (test2)
|
||||
sub3 (test2)
|
||||
EOF
|
||||
test_cmp expect actual
|
||||
)
|
||||
|
@ -1272,7 +1328,7 @@ test_expect_success 'clone --recurse-submodules with a pathspec works' '
|
|||
EOF
|
||||
|
||||
git clone --recurse-submodules="sub0" multisuper multisuper_clone &&
|
||||
git -C multisuper_clone submodule status |cut -c1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
|
@ -1289,7 +1345,7 @@ test_expect_success 'clone with multiple --recurse-submodules options' '
|
|||
--recurse-submodules=":(exclude)sub0" \
|
||||
--recurse-submodules=":(exclude)sub2" \
|
||||
multisuper multisuper_clone &&
|
||||
git -C multisuper_clone submodule status |cut -c1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
@ -1317,7 +1373,7 @@ test_expect_success 'clone and subsequent updates correctly auto-initialize subm
|
|||
--recurse-submodules=":(exclude)sub4" \
|
||||
multisuper multisuper_clone &&
|
||||
|
||||
git -C multisuper_clone submodule status |cut -c1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
git -C multisuper submodule add ../sub1 sub4 &&
|
||||
|
@ -1326,7 +1382,7 @@ test_expect_success 'clone and subsequent updates correctly auto-initialize subm
|
|||
# obtain the new superproject
|
||||
git -C multisuper_clone pull &&
|
||||
git -C multisuper_clone submodule update --init &&
|
||||
git -C multisuper_clone submodule status |cut -c1,43- >actual &&
|
||||
git -C multisuper_clone submodule status | sed "s/$OID_REGEX //" >actual &&
|
||||
test_cmp expect2 actual
|
||||
'
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue