]> git.ipfire.org Git - thirdparty/git.git/blame - t/t6001-rev-list-graft.sh
The third batch
[thirdparty/git.git] / t / t6001-rev-list-graft.sh
CommitLineData
16652170
JH
1#!/bin/sh
2
3test_description='Revision traversal vs grafts and path limiter'
4
1550bb6e 5GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
334afbc7
JS
6export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7
16652170
JH
8. ./test-lib.sh
9
10test_expect_success setup '
11 mkdir subdir &&
12 echo >fileA fileA &&
13 echo >subdir/fileB fileB &&
14 git add fileA subdir/fileB &&
15 git commit -a -m "Initial in one history." &&
11da571a 16 A0=$(git rev-parse --verify HEAD) &&
16652170
JH
17
18 echo >fileA fileA modified &&
19 git commit -a -m "Second in one history." &&
11da571a 20 A1=$(git rev-parse --verify HEAD) &&
16652170
JH
21
22 echo >subdir/fileB fileB modified &&
23 git commit -a -m "Third in one history." &&
11da571a 24 A2=$(git rev-parse --verify HEAD) &&
16652170 25
977f8ace
HWN
26 git update-ref -d refs/heads/main &&
27 rm -f .git/index &&
16652170
JH
28
29 echo >fileA fileA again &&
30 echo >subdir/fileB fileB again &&
31 git add fileA subdir/fileB &&
32 git commit -a -m "Initial in alternate history." &&
11da571a 33 B0=$(git rev-parse --verify HEAD) &&
16652170
JH
34
35 echo >fileA fileA modified in alternate history &&
36 git commit -a -m "Second in alternate history." &&
11da571a 37 B1=$(git rev-parse --verify HEAD) &&
16652170
JH
38
39 echo >subdir/fileB fileB modified in alternate history &&
40 git commit -a -m "Third in alternate history." &&
11da571a 41 B2=$(git rev-parse --verify HEAD) &&
16652170
JH
42 : done
43'
44
45check () {
46 type=$1
47 shift
48
49 arg=
50 which=arg
51 rm -f test.expect
52 for a
53 do
54 if test "z$a" = z--
55 then
56 which=expect
57 child=
58 continue
59 fi
60 if test "$which" = arg
61 then
62 arg="$arg$a "
63 continue
64 fi
65 if test "$type" = basic
66 then
67 echo "$a"
68 else
69 if test "z$child" != z
70 then
71 echo "$child $a"
72 fi
73 child="$a"
74 fi
75 done >test.expect
76 if test "$type" != basic && test "z$child" != z
77 then
78 echo >>test.expect $child
79 fi
80 if test $type = basic
81 then
82 git rev-list $arg >test.actual
83 elif test $type = parents
84 then
85 git rev-list --parents $arg >test.actual
86 elif test $type = parents-raw
87 then
88 git rev-list --parents --pretty=raw $arg |
89 sed -n -e 's/^commit //p' >test.actual
90 fi
4fdf71be 91 test_cmp test.expect test.actual
16652170
JH
92}
93
94for type in basic parents parents-raw
95do
96 test_expect_success 'without grafts' "
a48fcd83 97 rm -f .git/info/grafts &&
16652170
JH
98 check $type $B2 -- $B2 $B1 $B0
99 "
100
101 test_expect_success 'with grafts' "
93e02b6e 102 mkdir -p .git/info &&
a48fcd83 103 echo '$B0 $A2' >.git/info/grafts &&
16652170
JH
104 check $type $B2 -- $B2 $B1 $B0 $A2 $A1 $A0
105 "
106
107 test_expect_success 'without grafts, with pathlimit' "
a48fcd83 108 rm -f .git/info/grafts &&
16652170
JH
109 check $type $B2 subdir -- $B2 $B0
110 "
111
112 test_expect_success 'with grafts, with pathlimit' "
a48fcd83 113 echo '$B0 $A2' >.git/info/grafts &&
16652170
JH
114 check $type $B2 subdir -- $B2 $B0 $A2 $A0
115 "
116
117done
f9f99b3f
JS
118
119test_expect_success 'show advice that grafts are deprecated' '
120 git show HEAD 2>err &&
6789275d 121 test_grep "git replace" err &&
f9f99b3f
JS
122 test_config advice.graftFileDeprecated false &&
123 git show HEAD 2>err &&
6789275d 124 test_grep ! "git replace" err
f9f99b3f
JS
125'
126
16652170 127test_done