#!/bin/sh setvar test_description = ''Revision traversal vs grafts and path limiter'' source ./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 ' proc check { setvar type = "$1" shift setvar arg = '' setvar which = 'arg' rm -f test.expectfor a in @ARGV { if test "z$a" = z-- { setvar which = 'expect' setvar child = '' continue } if test $which = arg { setvar arg = ""$arg$a "" continue } if test $type = basic { echo $a } else { if test "z$child" != z { echo "$child $a" } setvar child = "$a" } } >test.expect if test $type != basic && test "z$child" != z { echo >>test.expect $child>>test.expect $child } if test $type = basic { git rev-list $arg >test.actual } elif test $type = parents { git rev-list --parents $arg >test.actual } elif test $type = parents-raw { git rev-list --parents --pretty=raw $arg | sed -n -e 's/^commit //p' >test.actual } test_cmp test.expect test.actual } for type in basic parents parents-raw { 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 " } test_done