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
157
third_party/git/t/t7416-submodule-dash-url.sh
vendored
157
third_party/git/t/t7416-submodule-dash-url.sh
vendored
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
test_description='check handling of .gitmodule url with dash'
|
||||
test_description='check handling of disallowed .gitmodule urls'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'create submodule with protected dash in url' '
|
||||
|
|
@ -46,4 +46,159 @@ test_expect_success 'fsck rejects unprotected dash' '
|
|||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'trailing backslash is handled correctly' '
|
||||
git init testmodule &&
|
||||
test_commit -C testmodule c &&
|
||||
git submodule add ./testmodule &&
|
||||
: ensure that the name ends in a double backslash &&
|
||||
sed -e "s|\\(submodule \"testmodule\\)\"|\\1\\\\\\\\\"|" \
|
||||
-e "s|url = .*|url = \" --should-not-be-an-option\"|" \
|
||||
<.gitmodules >.new &&
|
||||
mv .new .gitmodules &&
|
||||
git commit -am "Add testmodule" &&
|
||||
test_must_fail git clone --verbose --recurse-submodules . dolly 2>err &&
|
||||
test_i18ngrep ! "unknown option" err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects missing URL scheme' '
|
||||
git checkout --orphan missing-scheme &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = http::one.example.com/foo.git
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
test_tick &&
|
||||
git commit -m "gitmodules with missing URL scheme" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects relative URL resolving to missing scheme' '
|
||||
git checkout --orphan relative-missing-scheme &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = "..\\../.\\../:one.example.com/foo.git"
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
test_tick &&
|
||||
git commit -m "gitmodules with relative URL that strips off scheme" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects empty URL scheme' '
|
||||
git checkout --orphan empty-scheme &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = http::://one.example.com/foo.git
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
test_tick &&
|
||||
git commit -m "gitmodules with empty URL scheme" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects relative URL resolving to empty scheme' '
|
||||
git checkout --orphan relative-empty-scheme &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = ../../../:://one.example.com/foo.git
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
test_tick &&
|
||||
git commit -m "relative gitmodules URL resolving to empty scheme" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects empty hostname' '
|
||||
git checkout --orphan empty-host &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = http:///one.example.com/foo.git
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
test_tick &&
|
||||
git commit -m "gitmodules with extra slashes" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects relative url that produced empty hostname' '
|
||||
git checkout --orphan messy-relative &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = ../../..//one.example.com/foo.git
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
test_tick &&
|
||||
git commit -m "gitmodules abusing relative_path" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck permits embedded newline with unrecognized scheme' '
|
||||
git checkout --orphan newscheme &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = "data://acjbkd%0akajfdickajkd"
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
git commit -m "gitmodules with unrecognized scheme" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
git push dst HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects embedded newline in url' '
|
||||
# create an orphan branch to avoid existing .gitmodules objects
|
||||
git checkout --orphan newline &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = "https://one.example.com?%0ahost=two.example.com/foo.git"
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
git commit -m "gitmodules with newline" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_expect_success 'fsck rejects embedded newline in relative url' '
|
||||
git checkout --orphan relative-newline &&
|
||||
cat >.gitmodules <<-\EOF &&
|
||||
[submodule "foo"]
|
||||
url = "./%0ahost=two.example.com/foo.git"
|
||||
EOF
|
||||
git add .gitmodules &&
|
||||
git commit -m "relative url with newline" &&
|
||||
test_when_finished "rm -rf dst" &&
|
||||
git init --bare dst &&
|
||||
git -C dst config transfer.fsckObjects true &&
|
||||
test_must_fail git push dst HEAD 2>err &&
|
||||
grep gitmodulesUrl err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue