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