2006-09-28 03:34:37 +08:00
|
|
|
#!/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
|
2010-05-14 17:31:37 +08:00
|
|
|
test_cmp test.expect test.actual
|
2006-09-28 03:34:37 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
for type in basic parents parents-raw
|
|
|
|
do
|
|
|
|
test_expect_success 'without grafts' "
|
2010-10-31 09:46:54 +08:00
|
|
|
rm -f .git/info/grafts &&
|
2006-09-28 03:34:37 +08:00
|
|
|
check $type $B2 -- $B2 $B1 $B0
|
|
|
|
"
|
|
|
|
|
|
|
|
test_expect_success 'with grafts' "
|
2010-10-31 09:46:54 +08:00
|
|
|
echo '$B0 $A2' >.git/info/grafts &&
|
2006-09-28 03:34:37 +08:00
|
|
|
check $type $B2 -- $B2 $B1 $B0 $A2 $A1 $A0
|
|
|
|
"
|
|
|
|
|
|
|
|
test_expect_success 'without grafts, with pathlimit' "
|
2010-10-31 09:46:54 +08:00
|
|
|
rm -f .git/info/grafts &&
|
2006-09-28 03:34:37 +08:00
|
|
|
check $type $B2 subdir -- $B2 $B0
|
|
|
|
"
|
|
|
|
|
|
|
|
test_expect_success 'with grafts, with pathlimit' "
|
2010-10-31 09:46:54 +08:00
|
|
|
echo '$B0 $A2' >.git/info/grafts &&
|
2006-09-28 03:34:37 +08:00
|
|
|
check $type $B2 subdir -- $B2 $B0 $A2 $A0
|
|
|
|
"
|
|
|
|
|
|
|
|
done
|
|
|
|
test_done
|