merge(third_party/git): Merge squashed git subtree at v2.23.0
Merge commit '1b593e1ea4' as 'third_party/git'
This commit is contained in:
commit
7ef0d62730
3629 changed files with 1139935 additions and 0 deletions
72
third_party/git/t/t5547-push-quarantine.sh
vendored
Executable file
72
third_party/git/t/t5547-push-quarantine.sh
vendored
Executable file
|
|
@ -0,0 +1,72 @@
|
|||
#!/bin/sh
|
||||
|
||||
test_description='check quarantine of objects during push'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'create picky dest repo' '
|
||||
git init --bare dest.git &&
|
||||
write_script dest.git/hooks/pre-receive <<-\EOF
|
||||
while read old new ref; do
|
||||
test "$(git log -1 --format=%s $new)" = reject && exit 1
|
||||
done
|
||||
exit 0
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success 'accepted objects work' '
|
||||
test_commit ok &&
|
||||
git push dest.git HEAD &&
|
||||
commit=$(git rev-parse HEAD) &&
|
||||
git --git-dir=dest.git cat-file commit $commit
|
||||
'
|
||||
|
||||
test_expect_success 'rejected objects are not installed' '
|
||||
test_commit reject &&
|
||||
commit=$(git rev-parse HEAD) &&
|
||||
test_must_fail git push dest.git reject &&
|
||||
test_must_fail git --git-dir=dest.git cat-file commit $commit
|
||||
'
|
||||
|
||||
test_expect_success 'rejected objects are removed' '
|
||||
echo "incoming-*" >expect &&
|
||||
(cd dest.git/objects && echo incoming-*) >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'push to repo path with path separator (colon)' '
|
||||
# The interesting failure case here is when the
|
||||
# receiving end cannot access its original object directory,
|
||||
# so make it likely for us to generate a delta by having
|
||||
# a non-trivial file with multiple versions.
|
||||
|
||||
test-tool genrandom foo 4096 >file.bin &&
|
||||
git add file.bin &&
|
||||
git commit -m bin &&
|
||||
|
||||
if test_have_prereq MINGW
|
||||
then
|
||||
pathsep=";"
|
||||
else
|
||||
pathsep=":"
|
||||
fi &&
|
||||
git clone --bare . "xxx${pathsep}yyy.git" &&
|
||||
|
||||
echo change >>file.bin &&
|
||||
git commit -am change &&
|
||||
# Note that we have to use the full path here, or it gets confused
|
||||
# with the ssh host:path syntax.
|
||||
git push "$(pwd)/xxx${pathsep}yyy.git" HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'updating a ref from quarantine is forbidden' '
|
||||
git init --bare update.git &&
|
||||
write_script update.git/hooks/pre-receive <<-\EOF &&
|
||||
read old new refname
|
||||
git update-ref refs/heads/unrelated $new
|
||||
exit 1
|
||||
EOF
|
||||
test_must_fail git push update.git HEAD &&
|
||||
git -C update.git fsck
|
||||
'
|
||||
|
||||
test_done
|
||||
Loading…
Add table
Add a link
Reference in a new issue