127 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description='Revision traversal vs grafts and path limiter'
 | |
| 
 | |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 | |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success setup '
 | |
| 	mkdir subdir &&
 | |
| 	echo >fileA fileA &&
 | |
| 	echo >subdir/fileB fileB &&
 | |
| 	git add fileA subdir/fileB &&
 | |
| 	git commit -a -m "Initial in one history." &&
 | |
| 	A0=$(git rev-parse --verify HEAD) &&
 | |
| 
 | |
| 	echo >fileA fileA modified &&
 | |
| 	git commit -a -m "Second in one history." &&
 | |
| 	A1=$(git rev-parse --verify HEAD) &&
 | |
| 
 | |
| 	echo >subdir/fileB fileB modified &&
 | |
| 	git commit -a -m "Third in one history." &&
 | |
| 	A2=$(git rev-parse --verify HEAD) &&
 | |
| 
 | |
| 	git update-ref -d refs/heads/main &&
 | |
| 	rm -f .git/index &&
 | |
| 
 | |
| 	echo >fileA fileA again &&
 | |
| 	echo >subdir/fileB fileB again &&
 | |
| 	git add fileA subdir/fileB &&
 | |
| 	git commit -a -m "Initial in alternate history." &&
 | |
| 	B0=$(git rev-parse --verify HEAD) &&
 | |
| 
 | |
| 	echo >fileA fileA modified in alternate history &&
 | |
| 	git commit -a -m "Second in alternate history." &&
 | |
| 	B1=$(git rev-parse --verify HEAD) &&
 | |
| 
 | |
| 	echo >subdir/fileB fileB modified in alternate history &&
 | |
| 	git commit -a -m "Third in alternate history." &&
 | |
| 	B2=$(git rev-parse --verify HEAD) &&
 | |
| 	: done
 | |
| '
 | |
| 
 | |
| check () {
 | |
| 	type=$1
 | |
| 	shift
 | |
| 
 | |
| 	arg=
 | |
| 	which=arg
 | |
| 	rm -f test.expect
 | |
| 	for a
 | |
| 	do
 | |
| 		if test "z$a" = z--
 | |
| 		then
 | |
| 			which=expect
 | |
| 			child=
 | |
| 			continue
 | |
| 		fi
 | |
| 		if test "$which" = arg
 | |
| 		then
 | |
| 			arg="$arg$a "
 | |
| 			continue
 | |
| 		fi
 | |
| 		if test "$type" = basic
 | |
| 		then
 | |
| 			echo "$a"
 | |
| 		else
 | |
| 			if test "z$child" != z
 | |
| 			then
 | |
| 				echo "$child $a"
 | |
| 			fi
 | |
| 			child="$a"
 | |
| 		fi
 | |
| 	done >test.expect
 | |
| 	if test "$type" != basic && test "z$child" != z
 | |
| 	then
 | |
| 		echo >>test.expect $child
 | |
| 	fi
 | |
| 	if test $type = basic
 | |
| 	then
 | |
| 		git rev-list $arg >test.actual
 | |
| 	elif test $type = parents
 | |
| 	then
 | |
| 		git rev-list --parents $arg >test.actual
 | |
| 	elif test $type = parents-raw
 | |
| 	then
 | |
| 		git rev-list --parents --pretty=raw $arg |
 | |
| 		sed -n -e 's/^commit //p' >test.actual
 | |
| 	fi
 | |
| 	test_cmp test.expect test.actual
 | |
| }
 | |
| 
 | |
| for type in basic parents parents-raw
 | |
| do
 | |
| 	test_expect_success 'without grafts' "
 | |
| 		rm -f .git/info/grafts &&
 | |
| 		check $type $B2 -- $B2 $B1 $B0
 | |
| 	"
 | |
| 
 | |
| 	test_expect_success 'with grafts' "
 | |
| 		echo '$B0 $A2' >.git/info/grafts &&
 | |
| 		check $type $B2 -- $B2 $B1 $B0 $A2 $A1 $A0
 | |
| 	"
 | |
| 
 | |
| 	test_expect_success 'without grafts, with pathlimit' "
 | |
| 		rm -f .git/info/grafts &&
 | |
| 		check $type $B2 subdir -- $B2 $B0
 | |
| 	"
 | |
| 
 | |
| 	test_expect_success 'with grafts, with pathlimit' "
 | |
| 		echo '$B0 $A2' >.git/info/grafts &&
 | |
| 		check $type $B2 subdir -- $B2 $B0 $A2 $A0
 | |
| 	"
 | |
| 
 | |
| done
 | |
| 
 | |
| test_expect_success 'show advice that grafts are deprecated' '
 | |
| 	git show HEAD 2>err &&
 | |
| 	test_i18ngrep "git replace" err &&
 | |
| 	test_config advice.graftFileDeprecated false &&
 | |
| 	git show HEAD 2>err &&
 | |
| 	test_i18ngrep ! "git replace" err
 | |
| '
 | |
| 
 | |
| test_done
 |