 8c3b9f7faa
			
		
	
	8c3b9f7faa
	
	
	
		
			
			Use 'test_atexit' to run cleanup commands to stop httpd at the end of the test script or upon interrupt or failure, as it is shorter, simpler, and more robust than registering such cleanup commands in the trap on EXIT in the test scripts. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			94 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='push from/to a shallow clone over http'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| . "$TEST_DIRECTORY"/lib-httpd.sh
 | |
| start_httpd
 | |
| 
 | |
| 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 <<EOF >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 <<EOF >expect &&
 | |
| c
 | |
| b
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success 'push to shallow repo via http' '
 | |
| 	git clone --bare --no-local shallow "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
 | |
| 	(
 | |
| 	cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
 | |
| 	git config http.receivepack true
 | |
| 	) &&
 | |
| 	(
 | |
| 	cd full &&
 | |
| 	commit 9 &&
 | |
| 	git push $HTTPD_URL/smart/repo.git +master:refs/remotes/top/master
 | |
| 	) &&
 | |
| 	(
 | |
| 	cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
 | |
| 	git fsck &&
 | |
| 	git log --format=%s top/master >actual &&
 | |
| 	cat <<EOF >expect &&
 | |
| 9
 | |
| 4
 | |
| 3
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'push from shallow repo via http' '
 | |
| 	mv "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" shallow-upstream.git &&
 | |
| 	git clone --bare --no-local full "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
 | |
| 	(
 | |
| 	cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
 | |
| 	git config http.receivepack true
 | |
| 	) &&
 | |
| 	commit 10 &&
 | |
| 	git push $HTTPD_URL/smart/repo.git +master:refs/remotes/top/master &&
 | |
| 	(
 | |
| 	cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
 | |
| 	git fsck &&
 | |
| 	git log --format=%s top/master >actual &&
 | |
| 	cat <<EOF >expect &&
 | |
| 10
 | |
| 4
 | |
| 3
 | |
| 2
 | |
| 1
 | |
| EOF
 | |
| 	test_cmp expect actual
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_done
 |