You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
2.6 KiB
122 lines
2.6 KiB
#!/bin/sh |
|
|
|
test_description='Revision traversal vs grafts and path limiter' |
|
|
|
. ./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
|
|
|