git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
67c384f1e8218124e5791b8f4183cfc52c68036f blob 2704 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 
#!/bin/sh

test_description='Revision traversal vs grafts and path limiter'

GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
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) &&

	rm -f .git/refs/heads/master .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
debug log:

solving 67c384f1e8 ...
found 67c384f1e8 in https://80x24.org/mirrors/git.git

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).