comparison tests/test-audit-path.t @ 34555:989e884d1be9

merge: check for path conflicts when merging (issue5628) When merging, check for any path conflicts introduced by the manifest merge and rename the conflicting file to a safe name. Differential Revision: https://phab.mercurial-scm.org/D784
author Mark Thomas <mbthomas@fb.com>
date Mon, 02 Oct 2017 14:05:30 -0700
parents 20bac46f7744
children eb586ed5d8ce
comparison
equal deleted inserted replaced
34554:6f11a74d489f 34555:989e884d1be9
101 $ hg manifest -r2 101 $ hg manifest -r2
102 back 102 back
103 back/test 103 back/test
104 #if symlink 104 #if symlink
105 $ hg update -Cr2 105 $ hg update -Cr2
106 abort: path 'back/test' traverses symbolic link 'back' 106 back: is both a file and a directory
107 abort: destination manifest contains path conflicts
107 [255] 108 [255]
108 #else 109 #else
109 ('back' will be a file and cause some other system specific error) 110 ('back' will be a file and cause some other system specific error)
110 $ hg update -Cr2 111 $ hg update -Cr2
111 abort: * (glob) 112 abort: * (glob)
158 159
159 try trivial merge 160 try trivial merge
160 161
161 $ hg up -qC 1 162 $ hg up -qC 1
162 $ hg merge 2 163 $ hg merge 2
163 abort: path 'a/poisoned' traverses symbolic link 'a' 164 a: path conflict - a file or link has the same name as a directory
164 [255] 165 the local file has been renamed to a~aa04623eb0c3
166 resolve manually then use 'hg resolve --mark a'
167 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
168 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
169 [1]
165 170
166 try rebase onto other revision: cache of audited paths should be discarded, 171 try rebase onto other revision: cache of audited paths should be discarded,
167 and the rebase should fail (issue5628) 172 and the rebase should fail (issue5628)
168 173
169 $ hg up -qC 2 174 $ hg up -qC 2
170 $ hg rebase -s 2 -d 1 --config extensions.rebase= 175 $ hg rebase -s 2 -d 1 --config extensions.rebase=
171 rebasing 2:e73c21d6b244 "file a/poisoned" (tip) 176 rebasing 2:e73c21d6b244 "file a/poisoned" (tip)
172 abort: path 'a/poisoned' traverses symbolic link 'a' 177 a: path conflict - a file or link has the same name as a directory
173 [255] 178 the local file has been renamed to a~aa04623eb0c3
179 resolve manually then use 'hg resolve --mark a'
180 unresolved conflicts (see hg resolve, then hg rebase --continue)
181 [1]
174 $ ls ../merge-symlink-out 182 $ ls ../merge-symlink-out
175 183
176 $ cd .. 184 $ cd ..
177 185
178 Test symlink traversal on update: 186 Test symlink traversal on update:
200 208
201 try linear update where symlink already exists: 209 try linear update where symlink already exists:
202 210
203 $ hg up -qC 0 211 $ hg up -qC 0
204 $ hg up 1 212 $ hg up 1
205 abort: path 'a/b' traverses symbolic link 'a' 213 a: is both a file and a directory
214 abort: destination manifest contains path conflicts
206 [255] 215 [255]
207 216
208 try linear update including symlinked directory and its content: paths are 217 try linear update including symlinked directory and its content: paths are
209 audited first by calculateupdates(), where no symlink is created so both 218 audited first by calculateupdates(), where no symlink is created so both
210 'a' and 'a/b' are taken as good paths. still applyupdates() should fail. 219 'a' and 'a/b' are taken as good paths. still applyupdates() should fail.
211 220
212 $ hg up -qC null 221 $ hg up -qC null
213 $ hg up 1 222 $ hg up 1
214 abort: path 'a/b' traverses symbolic link 'a' 223 a: is both a file and a directory
224 abort: destination manifest contains path conflicts
215 [255] 225 [255]
216 $ ls ../update-symlink-out 226 $ ls ../update-symlink-out
217 227
218 try branch update replacing directory with symlink, and its content: the 228 try branch update replacing directory with symlink, and its content: the
219 path 'a' is audited as a directory first, which should be audited again as 229 path 'a' is audited as a directory first, which should be audited again as
220 a symlink. 230 a symlink.
221 231
222 $ rm -f a 232 $ rm -f a
223 $ hg up -qC 2 233 $ hg up -qC 2
224 $ hg up 1 234 $ hg up 1
225 abort: path 'a/b' traverses symbolic link 'a' 235 a: is both a file and a directory
236 abort: destination manifest contains path conflicts
226 [255] 237 [255]
227 $ ls ../update-symlink-out 238 $ ls ../update-symlink-out
228 239
229 $ cd .. 240 $ cd ..
230 241