@@ -36,21 +36,22 @@ prime_resolve_undo () {
3636 test_must_fail git merge third^0 &&
3737 echo merge does not leave anything &&
3838 check_resolve_undo empty &&
39- echo different > file &&
40- git add file &&
39+ echo different > fi/le &&
40+ git add fi/le &&
4141 echo resolving records &&
42- check_resolve_undo recorded file initial:file second:file third:file
42+ check_resolve_undo recorded fi/le initial:fi/le second:fi/le third:fi/le
4343}
4444
4545test_expect_success setup '
46- test_commit initial file first &&
46+ mkdir fi &&
47+ test_commit initial fi/le first &&
4748 git branch side &&
4849 git branch another &&
49- test_commit second file second &&
50+ test_commit second fi/le second &&
5051 git checkout side &&
51- test_commit third file third &&
52+ test_commit third fi/le third &&
5253 git checkout another &&
53- test_commit fourth file fourth &&
54+ test_commit fourth fi/le fourth &&
5455 git checkout master
5556'
5657
@@ -59,7 +60,7 @@ test_expect_success 'add records switch clears' '
5960 test_tick &&
6061 git commit -m merged &&
6162 echo committing keeps &&
62- check_resolve_undo kept file initial:file second:file third:file &&
63+ check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
6364 git checkout second^0 &&
6465 echo switching clears &&
6566 check_resolve_undo cleared
@@ -70,15 +71,15 @@ test_expect_success 'rm records reset clears' '
7071 test_tick &&
7172 git commit -m merged &&
7273 echo committing keeps &&
73- check_resolve_undo kept file initial:file second:file third:file &&
74+ check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
7475
7576 echo merge clears upfront &&
7677 test_must_fail git merge fourth^0 &&
7778 check_resolve_undo nuked &&
7879
79- git rm -f file &&
80+ git rm -f fi/le &&
8081 echo resolving records &&
81- check_resolve_undo recorded file initial:file HEAD:file fourth:file &&
82+ check_resolve_undo recorded fi/le initial:fi/le HEAD:fi/le fourth:fi/le &&
8283
8384 git reset --hard &&
8485 echo resetting discards &&
@@ -90,7 +91,7 @@ test_expect_success 'plumbing clears' '
9091 test_tick &&
9192 git commit -m merged &&
9293 echo committing keeps &&
93- check_resolve_undo kept file initial:file second:file third:file &&
94+ check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
9495
9596 echo plumbing clear &&
9697 git update-index --clear-resolve-undo &&
@@ -100,7 +101,7 @@ test_expect_success 'plumbing clears' '
100101test_expect_success ' add records checkout -m undoes' '
101102 prime_resolve_undo &&
102103 git diff HEAD &&
103- git checkout --conflict=merge file &&
104+ git checkout --conflict=merge fi/le &&
104105 echo checkout used the record and removed it &&
105106 check_resolve_undo removed &&
106107 echo the index and the work tree is unmerged again &&
@@ -110,33 +111,59 @@ test_expect_success 'add records checkout -m undoes' '
110111
111112test_expect_success ' unmerge with plumbing' '
112113 prime_resolve_undo &&
113- git update-index --unresolve file &&
114+ git update-index --unresolve fi/le &&
114115 git ls-files -u >actual &&
115116 test $(wc -l <actual) = 3
116117'
117118
118- test_expect_success ' rerere and rerere -- forget' '
119+ test_expect_success ' rerere and rerere forget' '
119120 mkdir .git/rr-cache &&
120121 prime_resolve_undo &&
121122 echo record the resolution &&
122123 git rerere &&
123124 rerere_id=$(cd .git/rr-cache && echo */postimage) &&
124125 rerere_id=${rerere_id%/postimage} &&
125126 test -f .git/rr-cache/$rerere_id/postimage &&
126- git checkout -m file &&
127+ git checkout -m fi/le &&
127128 echo resurrect the conflict &&
128- grep "^=======" file &&
129+ grep "^=======" fi/le &&
129130 echo reresolve the conflict &&
130131 git rerere &&
131- test "z$(cat file )" = zdifferent &&
132+ test "z$(cat fi/le )" = zdifferent &&
132133 echo register the resolution again &&
133- git add file &&
134- check_resolve_undo kept file initial:file second:file third:file &&
134+ git add fi/le &&
135+ check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
135136 test -z "$(git ls-files -u)" &&
136- git rerere forget file &&
137+ git rerere forget fi/le &&
137138 ! test -f .git/rr-cache/$rerere_id/postimage &&
138139 tr "\0" "\n" <.git/MERGE_RR >actual &&
139- echo "$rerere_id file" >expect &&
140+ echo "$rerere_id fi/le" >expect &&
141+ test_cmp expect actual
142+ '
143+
144+ test_expect_success ' rerere and rerere forget (subdirectory)' '
145+ rm -fr .git/rr-cache &&
146+ mkdir .git/rr-cache &&
147+ prime_resolve_undo &&
148+ echo record the resolution &&
149+ (cd fi && git rerere) &&
150+ rerere_id=$(cd .git/rr-cache && echo */postimage) &&
151+ rerere_id=${rerere_id%/postimage} &&
152+ test -f .git/rr-cache/$rerere_id/postimage &&
153+ (cd fi && git checkout -m le) &&
154+ echo resurrect the conflict &&
155+ grep "^=======" fi/le &&
156+ echo reresolve the conflict &&
157+ (cd fi && git rerere) &&
158+ test "z$(cat fi/le)" = zdifferent &&
159+ echo register the resolution again &&
160+ (cd fi && git add le) &&
161+ check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
162+ test -z "$(git ls-files -u)" &&
163+ (cd fi && git rerere forget le) &&
164+ ! test -f .git/rr-cache/$rerere_id/postimage &&
165+ tr "\0" "\n" <.git/MERGE_RR >actual &&
166+ echo "$rerere_id fi/le" >expect &&
140167 test_cmp expect actual
141168'
142169
0 commit comments