#!/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