]>
Commit | Line | Data |
---|---|---|
16652170 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='Revision traversal vs grafts and path limiter' | |
4 | ||
1550bb6e | 5 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
6 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
7 | ||
16652170 JH |
8 | . ./test-lib.sh |
9 | ||
10 | test_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 | ||
45 | check () { | |
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 | ||
94 | for type in basic parents parents-raw | |
95 | do | |
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 | ||
117 | done | |
f9f99b3f JS |
118 | |
119 | test_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 | 127 | test_done |