From c8bae7493d2f2910b57f13ded012e86bdcfb0532 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:47:53 +0200 Subject: Adding upstream version 1:2.39.2. Signed-off-by: Daniel Baumann --- t/t5538-push-shallow.sh | 126 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100755 t/t5538-push-shallow.sh (limited to 't/t5538-push-shallow.sh') diff --git a/t/t5538-push-shallow.sh b/t/t5538-push-shallow.sh new file mode 100755 index 0000000..e91fcc1 --- /dev/null +++ b/t/t5538-push-shallow.sh @@ -0,0 +1,126 @@ +#!/bin/sh + +test_description='push from/to a shallow clone' + +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + +. ./test-lib.sh + +commit() { + echo "$1" >tracked && + git add tracked && + git commit -m "$1" +} + +test_expect_success 'setup' ' + git config --global transfer.fsckObjects true && + commit 1 && + commit 2 && + commit 3 && + commit 4 && + git clone . full && + ( + git init full-abc && + cd full-abc && + commit a && + commit b && + commit c + ) && + git clone --no-local --depth=2 .git shallow && + git --git-dir=shallow/.git log --format=%s >actual && + cat <expect && +4 +3 +EOF + test_cmp expect actual && + git clone --no-local --depth=2 full-abc/.git shallow2 && + git --git-dir=shallow2/.git log --format=%s >actual && + cat <expect && +c +b +EOF + test_cmp expect actual +' + +test_expect_success 'push from shallow clone' ' + ( + cd shallow && + commit 5 && + git push ../.git +main:refs/remotes/shallow/main + ) && + git log --format=%s shallow/main >actual && + git fsck && + cat <expect && +5 +4 +3 +2 +1 +EOF + test_cmp expect actual +' + +test_expect_success 'push from shallow clone, with grafted roots' ' + ( + cd shallow2 && + test_must_fail git push ../.git +main:refs/remotes/shallow2/main 2>err && + grep "shallow2/main.*shallow update not allowed" err + ) && + test_must_fail git rev-parse shallow2/main && + git fsck +' + +test_expect_success 'add new shallow root with receive.updateshallow on' ' + test_config receive.shallowupdate true && + ( + cd shallow2 && + git push ../.git +main:refs/remotes/shallow2/main + ) && + git log --format=%s shallow2/main >actual && + git fsck && + cat <expect && +c +b +EOF + test_cmp expect actual +' + +test_expect_success 'push from shallow to shallow' ' + ( + cd shallow && + git --git-dir=../shallow2/.git config receive.shallowupdate true && + git push ../shallow2/.git +main:refs/remotes/shallow/main && + git --git-dir=../shallow2/.git config receive.shallowupdate false + ) && + ( + cd shallow2 && + git log --format=%s shallow/main >actual && + git fsck && + cat <expect && +5 +4 +3 +EOF + test_cmp expect actual + ) +' + +test_expect_success 'push from full to shallow' ' + ! git --git-dir=shallow2/.git cat-file blob $(echo 1|git hash-object --stdin) && + commit 1 && + git push shallow2/.git +main:refs/remotes/top/main && + ( + cd shallow2 && + git log --format=%s top/main >actual && + git fsck && + cat <expect && +1 +4 +3 +EOF + test_cmp expect actual && + git cat-file blob $(echo 1|git hash-object --stdin) >/dev/null + ) +' +test_done -- cgit v1.2.3