##// END OF EJS Templates
test: remove changes preparing the drop of `HGMERGE`...
Boris Feld -
r40507:844a4068 default
parent child Browse files
Show More
@@ -1,796 +1,795 b''
1 #require no-reposimplestore
1 #require no-reposimplestore
2
2
3 This file focuses mainly on updating largefiles in the working
3 This file focuses mainly on updating largefiles in the working
4 directory (and ".hg/largefiles/dirstate")
4 directory (and ".hg/largefiles/dirstate")
5
5
6 $ unset HGMERGE
7 $ cat >> $HGRCPATH <<EOF
6 $ cat >> $HGRCPATH <<EOF
8 > [ui]
7 > [ui]
9 > merge = internal:merge
8 > merge = internal:merge
10 > [extensions]
9 > [extensions]
11 > largefiles =
10 > largefiles =
12 > [extdiff]
11 > [extdiff]
13 > # for portability:
12 > # for portability:
14 > pdiff = sh "$RUNTESTDIR/pdiff"
13 > pdiff = sh "$RUNTESTDIR/pdiff"
15 > EOF
14 > EOF
16
15
17 $ hg init repo
16 $ hg init repo
18 $ cd repo
17 $ cd repo
19
18
20 $ echo large1 > large1
19 $ echo large1 > large1
21 $ echo large2 > large2
20 $ echo large2 > large2
22 $ hg add --large large1 large2
21 $ hg add --large large1 large2
23 $ echo normal1 > normal1
22 $ echo normal1 > normal1
24 $ hg add normal1
23 $ hg add normal1
25 $ hg commit -m '#0'
24 $ hg commit -m '#0'
26 $ echo 'large1 in #1' > large1
25 $ echo 'large1 in #1' > large1
27 $ echo 'normal1 in #1' > normal1
26 $ echo 'normal1 in #1' > normal1
28 $ hg commit -m '#1'
27 $ hg commit -m '#1'
29 $ hg pdiff -r '.^' --config extensions.extdiff=
28 $ hg pdiff -r '.^' --config extensions.extdiff=
30 diff -Nru repo.0d9d9b8dc9a3/.hglf/large1 repo/.hglf/large1
29 diff -Nru repo.0d9d9b8dc9a3/.hglf/large1 repo/.hglf/large1
31 --- repo.0d9d9b8dc9a3/.hglf/large1 * (glob)
30 --- repo.0d9d9b8dc9a3/.hglf/large1 * (glob)
32 +++ repo/.hglf/large1 * (glob)
31 +++ repo/.hglf/large1 * (glob)
33 @@ -1* +1* @@ (glob)
32 @@ -1* +1* @@ (glob)
34 -4669e532d5b2c093a78eca010077e708a071bb64
33 -4669e532d5b2c093a78eca010077e708a071bb64
35 +58e24f733a964da346e2407a2bee99d9001184f5
34 +58e24f733a964da346e2407a2bee99d9001184f5
36 diff -Nru repo.0d9d9b8dc9a3/normal1 repo/normal1
35 diff -Nru repo.0d9d9b8dc9a3/normal1 repo/normal1
37 --- repo.0d9d9b8dc9a3/normal1 * (glob)
36 --- repo.0d9d9b8dc9a3/normal1 * (glob)
38 +++ repo/normal1 * (glob)
37 +++ repo/normal1 * (glob)
39 @@ -1* +1* @@ (glob)
38 @@ -1* +1* @@ (glob)
40 -normal1
39 -normal1
41 +normal1 in #1
40 +normal1 in #1
42 [1]
41 [1]
43 $ hg update -q -C 0
42 $ hg update -q -C 0
44 $ echo 'large2 in #2' > large2
43 $ echo 'large2 in #2' > large2
45 $ hg commit -m '#2'
44 $ hg commit -m '#2'
46 created new head
45 created new head
47
46
48 Test that update also updates the lfdirstate of 'unsure' largefiles after
47 Test that update also updates the lfdirstate of 'unsure' largefiles after
49 hashing them:
48 hashing them:
50
49
51 The previous operations will usually have left us with largefiles with a mtime
50 The previous operations will usually have left us with largefiles with a mtime
52 within the same second as the dirstate was written.
51 within the same second as the dirstate was written.
53 The lfdirstate entries will thus have been written with an invalidated/unset
52 The lfdirstate entries will thus have been written with an invalidated/unset
54 mtime to make sure further changes within the same second is detected.
53 mtime to make sure further changes within the same second is detected.
55 We will however occasionally be "lucky" and get a tick between writing
54 We will however occasionally be "lucky" and get a tick between writing
56 largefiles and writing dirstate so we get valid lfdirstate timestamps. The
55 largefiles and writing dirstate so we get valid lfdirstate timestamps. The
57 following verification is thus disabled but can be verified manually.
56 following verification is thus disabled but can be verified manually.
58
57
59 #if false
58 #if false
60 $ hg debugdirstate --large --nodate
59 $ hg debugdirstate --large --nodate
61 n 644 7 unset large1
60 n 644 7 unset large1
62 n 644 13 unset large2
61 n 644 13 unset large2
63 #endif
62 #endif
64
63
65 Wait to make sure we get a tick so the mtime of the largefiles become valid.
64 Wait to make sure we get a tick so the mtime of the largefiles become valid.
66
65
67 $ sleep 1
66 $ sleep 1
68
67
69 A linear merge will update standins before performing the actual merge. It will
68 A linear merge will update standins before performing the actual merge. It will
70 do a lfdirstate status walk and find 'unset'/'unsure' files, hash them, and
69 do a lfdirstate status walk and find 'unset'/'unsure' files, hash them, and
71 update the corresponding standins.
70 update the corresponding standins.
72 Verify that it actually marks the clean files as clean in lfdirstate so
71 Verify that it actually marks the clean files as clean in lfdirstate so
73 we don't have to hash them again next time we update.
72 we don't have to hash them again next time we update.
74
73
75 $ hg up
74 $ hg up
76 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 updated to "f74e50bd9e55: #2"
76 updated to "f74e50bd9e55: #2"
78 1 other heads for branch "default"
77 1 other heads for branch "default"
79 $ hg debugdirstate --large --nodate
78 $ hg debugdirstate --large --nodate
80 n 644 7 set large1
79 n 644 7 set large1
81 n 644 13 set large2
80 n 644 13 set large2
82
81
83 Test that lfdirstate keeps track of last modification of largefiles and
82 Test that lfdirstate keeps track of last modification of largefiles and
84 prevents unnecessary hashing of content - also after linear/noop update
83 prevents unnecessary hashing of content - also after linear/noop update
85
84
86 $ sleep 1
85 $ sleep 1
87 $ hg st
86 $ hg st
88 $ hg debugdirstate --large --nodate
87 $ hg debugdirstate --large --nodate
89 n 644 7 set large1
88 n 644 7 set large1
90 n 644 13 set large2
89 n 644 13 set large2
91 $ hg up
90 $ hg up
92 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
93 updated to "f74e50bd9e55: #2"
92 updated to "f74e50bd9e55: #2"
94 1 other heads for branch "default"
93 1 other heads for branch "default"
95 $ hg debugdirstate --large --nodate
94 $ hg debugdirstate --large --nodate
96 n 644 7 set large1
95 n 644 7 set large1
97 n 644 13 set large2
96 n 644 13 set large2
98
97
99 Test that "hg merge" updates largefiles from "other" correctly
98 Test that "hg merge" updates largefiles from "other" correctly
100
99
101 (getting largefiles from "other" normally)
100 (getting largefiles from "other" normally)
102
101
103 $ hg status -A large1
102 $ hg status -A large1
104 C large1
103 C large1
105 $ cat large1
104 $ cat large1
106 large1
105 large1
107 $ cat .hglf/large1
106 $ cat .hglf/large1
108 4669e532d5b2c093a78eca010077e708a071bb64
107 4669e532d5b2c093a78eca010077e708a071bb64
109 $ hg merge --config debug.dirstate.delaywrite=2
108 $ hg merge --config debug.dirstate.delaywrite=2
110 getting changed largefiles
109 getting changed largefiles
111 1 largefiles updated, 0 removed
110 1 largefiles updated, 0 removed
112 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
111 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
113 (branch merge, don't forget to commit)
112 (branch merge, don't forget to commit)
114 $ hg status -A large1
113 $ hg status -A large1
115 M large1
114 M large1
116 $ cat large1
115 $ cat large1
117 large1 in #1
116 large1 in #1
118 $ cat .hglf/large1
117 $ cat .hglf/large1
119 58e24f733a964da346e2407a2bee99d9001184f5
118 58e24f733a964da346e2407a2bee99d9001184f5
120 $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
119 $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
121 -4669e532d5b2c093a78eca010077e708a071bb64
120 -4669e532d5b2c093a78eca010077e708a071bb64
122 +58e24f733a964da346e2407a2bee99d9001184f5
121 +58e24f733a964da346e2407a2bee99d9001184f5
123
122
124 (getting largefiles from "other" via conflict prompt)
123 (getting largefiles from "other" via conflict prompt)
125
124
126 $ hg update -q -C 2
125 $ hg update -q -C 2
127 $ echo 'large1 in #3' > large1
126 $ echo 'large1 in #3' > large1
128 $ echo 'normal1 in #3' > normal1
127 $ echo 'normal1 in #3' > normal1
129 $ hg commit -m '#3'
128 $ hg commit -m '#3'
130 $ cat .hglf/large1
129 $ cat .hglf/large1
131 e5bb990443d6a92aaf7223813720f7566c9dd05b
130 e5bb990443d6a92aaf7223813720f7566c9dd05b
132 $ hg merge --config debug.dirstate.delaywrite=2 --config ui.interactive=True <<EOF
131 $ hg merge --config debug.dirstate.delaywrite=2 --config ui.interactive=True <<EOF
133 > o
132 > o
134 > EOF
133 > EOF
135 largefile large1 has a merge conflict
134 largefile large1 has a merge conflict
136 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
135 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
137 keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or
136 keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or
138 take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o
137 take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o
139 merging normal1
138 merging normal1
140 warning: conflicts while merging normal1! (edit, then use 'hg resolve --mark')
139 warning: conflicts while merging normal1! (edit, then use 'hg resolve --mark')
141 getting changed largefiles
140 getting changed largefiles
142 1 largefiles updated, 0 removed
141 1 largefiles updated, 0 removed
143 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
142 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
144 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
143 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
145 [1]
144 [1]
146 $ hg status -A large1
145 $ hg status -A large1
147 M large1
146 M large1
148 $ cat large1
147 $ cat large1
149 large1 in #1
148 large1 in #1
150 $ cat .hglf/large1
149 $ cat .hglf/large1
151 58e24f733a964da346e2407a2bee99d9001184f5
150 58e24f733a964da346e2407a2bee99d9001184f5
152 $ rm normal1.orig
151 $ rm normal1.orig
153
152
154 (merge non-existing largefiles from "other" via conflict prompt -
153 (merge non-existing largefiles from "other" via conflict prompt -
155 make sure the following commit doesn't abort in a confusing way when trying to
154 make sure the following commit doesn't abort in a confusing way when trying to
156 mark the non-existing file as normal in lfdirstate)
155 mark the non-existing file as normal in lfdirstate)
157
156
158 $ mv .hg/largefiles/58e24f733a964da346e2407a2bee99d9001184f5 .
157 $ mv .hg/largefiles/58e24f733a964da346e2407a2bee99d9001184f5 .
159 $ hg update -q -C 3
158 $ hg update -q -C 3
160 $ hg merge --config largefiles.usercache=not --config debug.dirstate.delaywrite=2 --tool :local --config ui.interactive=True <<EOF
159 $ hg merge --config largefiles.usercache=not --config debug.dirstate.delaywrite=2 --tool :local --config ui.interactive=True <<EOF
161 > o
160 > o
162 > EOF
161 > EOF
163 largefile large1 has a merge conflict
162 largefile large1 has a merge conflict
164 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
163 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
165 keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or
164 keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or
166 take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o
165 take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o
167 getting changed largefiles
166 getting changed largefiles
168 large1: largefile 58e24f733a964da346e2407a2bee99d9001184f5 not available from file:/*/$TESTTMP/repo (glob)
167 large1: largefile 58e24f733a964da346e2407a2bee99d9001184f5 not available from file:/*/$TESTTMP/repo (glob)
169 0 largefiles updated, 0 removed
168 0 largefiles updated, 0 removed
170 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
169 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
171 (branch merge, don't forget to commit)
170 (branch merge, don't forget to commit)
172 $ hg commit -m '1-2-3 testing' --config largefiles.usercache=not
171 $ hg commit -m '1-2-3 testing' --config largefiles.usercache=not
173 large1: largefile 58e24f733a964da346e2407a2bee99d9001184f5 not available from local store
172 large1: largefile 58e24f733a964da346e2407a2bee99d9001184f5 not available from local store
174 $ hg up -C . --config largefiles.usercache=not
173 $ hg up -C . --config largefiles.usercache=not
175 getting changed largefiles
174 getting changed largefiles
176 large1: largefile 58e24f733a964da346e2407a2bee99d9001184f5 not available from file:/*/$TESTTMP/repo (glob)
175 large1: largefile 58e24f733a964da346e2407a2bee99d9001184f5 not available from file:/*/$TESTTMP/repo (glob)
177 0 largefiles updated, 0 removed
176 0 largefiles updated, 0 removed
178 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
177 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
179 $ hg st large1
178 $ hg st large1
180 ! large1
179 ! large1
181 $ hg rollback -q
180 $ hg rollback -q
182 $ mv 58e24f733a964da346e2407a2bee99d9001184f5 .hg/largefiles/
181 $ mv 58e24f733a964da346e2407a2bee99d9001184f5 .hg/largefiles/
183
182
184 Test that "hg revert -r REV" updates largefiles from "REV" correctly
183 Test that "hg revert -r REV" updates largefiles from "REV" correctly
185
184
186 $ hg update -q -C 3
185 $ hg update -q -C 3
187 $ hg status -A large1
186 $ hg status -A large1
188 C large1
187 C large1
189 $ cat large1
188 $ cat large1
190 large1 in #3
189 large1 in #3
191 $ cat .hglf/large1
190 $ cat .hglf/large1
192 e5bb990443d6a92aaf7223813720f7566c9dd05b
191 e5bb990443d6a92aaf7223813720f7566c9dd05b
193 $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
192 $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
194 -4669e532d5b2c093a78eca010077e708a071bb64
193 -4669e532d5b2c093a78eca010077e708a071bb64
195 +58e24f733a964da346e2407a2bee99d9001184f5
194 +58e24f733a964da346e2407a2bee99d9001184f5
196 $ hg revert --no-backup -r 1 --config debug.dirstate.delaywrite=2 large1
195 $ hg revert --no-backup -r 1 --config debug.dirstate.delaywrite=2 large1
197 $ hg status -A large1
196 $ hg status -A large1
198 M large1
197 M large1
199 $ cat large1
198 $ cat large1
200 large1 in #1
199 large1 in #1
201 $ cat .hglf/large1
200 $ cat .hglf/large1
202 58e24f733a964da346e2407a2bee99d9001184f5
201 58e24f733a964da346e2407a2bee99d9001184f5
203
202
204 Test that "hg rollback" restores status of largefiles correctly
203 Test that "hg rollback" restores status of largefiles correctly
205
204
206 $ hg update -C -q
205 $ hg update -C -q
207 $ hg remove large1
206 $ hg remove large1
208 $ test -f .hglf/large1
207 $ test -f .hglf/large1
209 [1]
208 [1]
210 $ hg forget large2
209 $ hg forget large2
211 $ test -f .hglf/large2
210 $ test -f .hglf/large2
212 [1]
211 [1]
213 $ echo largeX > largeX
212 $ echo largeX > largeX
214 $ hg add --large largeX
213 $ hg add --large largeX
215 $ cat .hglf/largeX
214 $ cat .hglf/largeX
216
215
217 $ hg commit -m 'will be rollback-ed soon'
216 $ hg commit -m 'will be rollback-ed soon'
218 $ echo largeY > largeY
217 $ echo largeY > largeY
219 $ hg add --large largeY
218 $ hg add --large largeY
220
219
221 $ hg status -A large1
220 $ hg status -A large1
222 large1: $ENOENT$
221 large1: $ENOENT$
223
222
224 $ hg status -A large2
223 $ hg status -A large2
225 ? large2
224 ? large2
226 $ hg status -A largeX
225 $ hg status -A largeX
227 C largeX
226 C largeX
228 $ hg status -A largeY
227 $ hg status -A largeY
229 A largeY
228 A largeY
230 $ hg rollback
229 $ hg rollback
231 repository tip rolled back to revision 3 (undo commit)
230 repository tip rolled back to revision 3 (undo commit)
232 working directory now based on revision 3
231 working directory now based on revision 3
233 $ hg status -A large1
232 $ hg status -A large1
234 R large1
233 R large1
235 $ test -f .hglf/large1
234 $ test -f .hglf/large1
236 [1]
235 [1]
237 $ hg status -A large2
236 $ hg status -A large2
238 R large2
237 R large2
239 $ test -f .hglf/large2
238 $ test -f .hglf/large2
240 [1]
239 [1]
241 $ hg status -A largeX
240 $ hg status -A largeX
242 A largeX
241 A largeX
243 $ cat .hglf/largeX
242 $ cat .hglf/largeX
244
243
245 $ hg status -A largeY
244 $ hg status -A largeY
246 ? largeY
245 ? largeY
247 $ test -f .hglf/largeY
246 $ test -f .hglf/largeY
248 [1]
247 [1]
249 $ rm largeY
248 $ rm largeY
250
249
251 Test that "hg rollback" restores standins correctly
250 Test that "hg rollback" restores standins correctly
252
251
253 $ hg commit -m 'will be rollback-ed soon'
252 $ hg commit -m 'will be rollback-ed soon'
254 $ hg update -q -C 2
253 $ hg update -q -C 2
255 $ cat large1
254 $ cat large1
256 large1
255 large1
257 $ cat .hglf/large1
256 $ cat .hglf/large1
258 4669e532d5b2c093a78eca010077e708a071bb64
257 4669e532d5b2c093a78eca010077e708a071bb64
259 $ cat large2
258 $ cat large2
260 large2 in #2
259 large2 in #2
261 $ cat .hglf/large2
260 $ cat .hglf/large2
262 3cfce6277e7668985707b6887ce56f9f62f6ccd9
261 3cfce6277e7668985707b6887ce56f9f62f6ccd9
263
262
264 $ hg rollback -q -f
263 $ hg rollback -q -f
265 $ cat large1
264 $ cat large1
266 large1
265 large1
267 $ cat .hglf/large1
266 $ cat .hglf/large1
268 4669e532d5b2c093a78eca010077e708a071bb64
267 4669e532d5b2c093a78eca010077e708a071bb64
269 $ cat large2
268 $ cat large2
270 large2 in #2
269 large2 in #2
271 $ cat .hglf/large2
270 $ cat .hglf/large2
272 3cfce6277e7668985707b6887ce56f9f62f6ccd9
271 3cfce6277e7668985707b6887ce56f9f62f6ccd9
273
272
274 (rollback the parent of the working directory, when the parent of it
273 (rollback the parent of the working directory, when the parent of it
275 is not branch-tip)
274 is not branch-tip)
276
275
277 $ hg update -q -C 1
276 $ hg update -q -C 1
278 $ cat .hglf/large1
277 $ cat .hglf/large1
279 58e24f733a964da346e2407a2bee99d9001184f5
278 58e24f733a964da346e2407a2bee99d9001184f5
280 $ cat .hglf/large2
279 $ cat .hglf/large2
281 1deebade43c8c498a3c8daddac0244dc55d1331d
280 1deebade43c8c498a3c8daddac0244dc55d1331d
282
281
283 $ echo normalX > normalX
282 $ echo normalX > normalX
284 $ hg add normalX
283 $ hg add normalX
285 $ hg commit -m 'will be rollback-ed soon'
284 $ hg commit -m 'will be rollback-ed soon'
286 $ hg rollback -q
285 $ hg rollback -q
287
286
288 $ cat .hglf/large1
287 $ cat .hglf/large1
289 58e24f733a964da346e2407a2bee99d9001184f5
288 58e24f733a964da346e2407a2bee99d9001184f5
290 $ cat .hglf/large2
289 $ cat .hglf/large2
291 1deebade43c8c498a3c8daddac0244dc55d1331d
290 1deebade43c8c498a3c8daddac0244dc55d1331d
292 $ rm normalX
291 $ rm normalX
293
292
294 Test that "hg status" shows status of largefiles correctly just after
293 Test that "hg status" shows status of largefiles correctly just after
295 automated commit like rebase/transplant
294 automated commit like rebase/transplant
296
295
297 $ cat >> .hg/hgrc <<EOF
296 $ cat >> .hg/hgrc <<EOF
298 > [extensions]
297 > [extensions]
299 > rebase =
298 > rebase =
300 > strip =
299 > strip =
301 > transplant =
300 > transplant =
302 > EOF
301 > EOF
303 $ hg update -q -C 1
302 $ hg update -q -C 1
304 $ hg remove large1
303 $ hg remove large1
305 $ echo largeX > largeX
304 $ echo largeX > largeX
306 $ hg add --large largeX
305 $ hg add --large largeX
307 $ hg commit -m '#4'
306 $ hg commit -m '#4'
308
307
309 $ hg rebase -s 1 -d 2 --keep
308 $ hg rebase -s 1 -d 2 --keep
310 rebasing 1:72518492caa6 "#1"
309 rebasing 1:72518492caa6 "#1"
311 rebasing 4:07d6153b5c04 "#4" (tip)
310 rebasing 4:07d6153b5c04 "#4" (tip)
312
311
313 $ hg status -A large1
312 $ hg status -A large1
314 large1: $ENOENT$
313 large1: $ENOENT$
315
314
316 $ hg status -A largeX
315 $ hg status -A largeX
317 C largeX
316 C largeX
318 $ hg strip -q 5
317 $ hg strip -q 5
319
318
320 $ hg update -q -C 2
319 $ hg update -q -C 2
321 $ hg transplant -q 1 4
320 $ hg transplant -q 1 4
322
321
323 $ hg status -A large1
322 $ hg status -A large1
324 large1: $ENOENT$
323 large1: $ENOENT$
325
324
326 $ hg status -A largeX
325 $ hg status -A largeX
327 C largeX
326 C largeX
328 $ hg strip -q 5
327 $ hg strip -q 5
329
328
330 $ hg update -q -C 2
329 $ hg update -q -C 2
331 $ hg transplant -q --merge 1 --merge 4
330 $ hg transplant -q --merge 1 --merge 4
332
331
333 $ hg status -A large1
332 $ hg status -A large1
334 large1: $ENOENT$
333 large1: $ENOENT$
335
334
336 $ hg status -A largeX
335 $ hg status -A largeX
337 C largeX
336 C largeX
338 $ hg strip -q 5
337 $ hg strip -q 5
339
338
340 Test that linear merge can detect modification (and conflict) correctly
339 Test that linear merge can detect modification (and conflict) correctly
341
340
342 (linear merge without conflict)
341 (linear merge without conflict)
343
342
344 $ echo 'large2 for linear merge (no conflict)' > large2
343 $ echo 'large2 for linear merge (no conflict)' > large2
345 $ hg update 3 --config debug.dirstate.delaywrite=2
344 $ hg update 3 --config debug.dirstate.delaywrite=2
346 getting changed largefiles
345 getting changed largefiles
347 1 largefiles updated, 0 removed
346 1 largefiles updated, 0 removed
348 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
347 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
349 $ hg status -A large2
348 $ hg status -A large2
350 M large2
349 M large2
351 $ cat large2
350 $ cat large2
352 large2 for linear merge (no conflict)
351 large2 for linear merge (no conflict)
353 $ cat .hglf/large2
352 $ cat .hglf/large2
354 9c4bf8f1b33536d6e5f89447e10620cfe52ea710
353 9c4bf8f1b33536d6e5f89447e10620cfe52ea710
355
354
356 (linear merge with conflict, choosing "other")
355 (linear merge with conflict, choosing "other")
357
356
358 $ hg update -q -C 2
357 $ hg update -q -C 2
359 $ echo 'large1 for linear merge (conflict)' > large1
358 $ echo 'large1 for linear merge (conflict)' > large1
360 $ hg update 3 --config ui.interactive=True <<EOF
359 $ hg update 3 --config ui.interactive=True <<EOF
361 > o
360 > o
362 > EOF
361 > EOF
363 largefile large1 has a merge conflict
362 largefile large1 has a merge conflict
364 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
363 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
365 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
364 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
366 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? o
365 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? o
367 getting changed largefiles
366 getting changed largefiles
368 1 largefiles updated, 0 removed
367 1 largefiles updated, 0 removed
369 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
368 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
370 $ hg status -A large1
369 $ hg status -A large1
371 C large1
370 C large1
372 $ cat large1
371 $ cat large1
373 large1 in #3
372 large1 in #3
374 $ cat .hglf/large1
373 $ cat .hglf/large1
375 e5bb990443d6a92aaf7223813720f7566c9dd05b
374 e5bb990443d6a92aaf7223813720f7566c9dd05b
376
375
377 (linear merge with conflict, choosing "local")
376 (linear merge with conflict, choosing "local")
378
377
379 $ hg update -q -C 2
378 $ hg update -q -C 2
380 $ echo 'large1 for linear merge (conflict)' > large1
379 $ echo 'large1 for linear merge (conflict)' > large1
381 $ hg update 3 --config debug.dirstate.delaywrite=2
380 $ hg update 3 --config debug.dirstate.delaywrite=2
382 largefile large1 has a merge conflict
381 largefile large1 has a merge conflict
383 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
382 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
384 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
383 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
385 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
384 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
386 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
385 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
387 $ hg status -A large1
386 $ hg status -A large1
388 M large1
387 M large1
389 $ cat large1
388 $ cat large1
390 large1 for linear merge (conflict)
389 large1 for linear merge (conflict)
391 $ cat .hglf/large1
390 $ cat .hglf/large1
392 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
391 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
393
392
394 Test a linear merge to a revision containing same-name normal file
393 Test a linear merge to a revision containing same-name normal file
395
394
396 $ hg update -q -C 3
395 $ hg update -q -C 3
397 $ hg remove large2
396 $ hg remove large2
398 $ echo 'large2 as normal file' > large2
397 $ echo 'large2 as normal file' > large2
399 $ hg add large2
398 $ hg add large2
400 $ echo 'large3 as normal file' > large3
399 $ echo 'large3 as normal file' > large3
401 $ hg add large3
400 $ hg add large3
402 $ hg commit -m '#5'
401 $ hg commit -m '#5'
403 $ hg manifest
402 $ hg manifest
404 .hglf/large1
403 .hglf/large1
405 large2
404 large2
406 large3
405 large3
407 normal1
406 normal1
408
407
409 (modified largefile is already switched to normal)
408 (modified largefile is already switched to normal)
410
409
411 $ hg update -q -C 2
410 $ hg update -q -C 2
412 $ echo 'modified large2 for linear merge' > large2
411 $ echo 'modified large2 for linear merge' > large2
413 $ hg update -q 5
412 $ hg update -q 5
414 remote turned local largefile large2 into a normal file
413 remote turned local largefile large2 into a normal file
415 keep (l)argefile or use (n)ormal file? l
414 keep (l)argefile or use (n)ormal file? l
416 $ hg debugdirstate --no-dates | grep large2
415 $ hg debugdirstate --no-dates | grep large2
417 a 0 -1 unset .hglf/large2
416 a 0 -1 unset .hglf/large2
418 r 0 0 set large2
417 r 0 0 set large2
419 $ hg status -A large2
418 $ hg status -A large2
420 A large2
419 A large2
421 $ cat large2
420 $ cat large2
422 modified large2 for linear merge
421 modified large2 for linear merge
423
422
424 (added largefile is already committed as normal)
423 (added largefile is already committed as normal)
425
424
426 $ hg update -q -C 2
425 $ hg update -q -C 2
427 $ echo 'large3 as large file for linear merge' > large3
426 $ echo 'large3 as large file for linear merge' > large3
428 $ hg add --large large3
427 $ hg add --large large3
429 $ hg update -q 5
428 $ hg update -q 5
430 remote turned local largefile large3 into a normal file
429 remote turned local largefile large3 into a normal file
431 keep (l)argefile or use (n)ormal file? l
430 keep (l)argefile or use (n)ormal file? l
432 $ hg debugdirstate --no-dates | grep large3
431 $ hg debugdirstate --no-dates | grep large3
433 a 0 -1 unset .hglf/large3
432 a 0 -1 unset .hglf/large3
434 r 0 0 set large3
433 r 0 0 set large3
435 $ hg status -A large3
434 $ hg status -A large3
436 A large3
435 A large3
437 $ cat large3
436 $ cat large3
438 large3 as large file for linear merge
437 large3 as large file for linear merge
439 $ rm -f large3 .hglf/large3
438 $ rm -f large3 .hglf/large3
440
439
441 Test that the internal linear merging works correctly
440 Test that the internal linear merging works correctly
442 (both heads are stripped to keep pairing of revision number and commit log)
441 (both heads are stripped to keep pairing of revision number and commit log)
443
442
444 $ hg update -q -C 2
443 $ hg update -q -C 2
445 $ hg strip 3 4
444 $ hg strip 3 4
446 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9530e27857f7-2e7b195d-backup.hg
445 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9530e27857f7-2e7b195d-backup.hg
447 $ mv .hg/strip-backup/9530e27857f7-2e7b195d-backup.hg $TESTTMP
446 $ mv .hg/strip-backup/9530e27857f7-2e7b195d-backup.hg $TESTTMP
448
447
449 (internal linear merging at "hg pull --update")
448 (internal linear merging at "hg pull --update")
450
449
451 $ echo 'large1 for linear merge (conflict)' > large1
450 $ echo 'large1 for linear merge (conflict)' > large1
452 $ echo 'large2 for linear merge (conflict with normal file)' > large2
451 $ echo 'large2 for linear merge (conflict with normal file)' > large2
453 $ hg pull --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-2e7b195d-backup.hg
452 $ hg pull --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-2e7b195d-backup.hg
454 pulling from $TESTTMP/9530e27857f7-2e7b195d-backup.hg
453 pulling from $TESTTMP/9530e27857f7-2e7b195d-backup.hg
455 searching for changes
454 searching for changes
456 adding changesets
455 adding changesets
457 adding manifests
456 adding manifests
458 adding file changes
457 adding file changes
459 added 3 changesets with 5 changes to 5 files
458 added 3 changesets with 5 changes to 5 files
460 new changesets 9530e27857f7:d65e59e952a9 (3 drafts)
459 new changesets 9530e27857f7:d65e59e952a9 (3 drafts)
461 remote turned local largefile large2 into a normal file
460 remote turned local largefile large2 into a normal file
462 keep (l)argefile or use (n)ormal file? l
461 keep (l)argefile or use (n)ormal file? l
463 largefile large1 has a merge conflict
462 largefile large1 has a merge conflict
464 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
463 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
465 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
464 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
466 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
465 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
467 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
466 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
468 updated to "d65e59e952a9: #5"
467 updated to "d65e59e952a9: #5"
469 1 other heads for branch "default"
468 1 other heads for branch "default"
470
469
471 $ hg status -A large1
470 $ hg status -A large1
472 M large1
471 M large1
473 $ cat large1
472 $ cat large1
474 large1 for linear merge (conflict)
473 large1 for linear merge (conflict)
475 $ cat .hglf/large1
474 $ cat .hglf/large1
476 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
475 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
477 $ hg status -A large2
476 $ hg status -A large2
478 A large2
477 A large2
479 $ cat large2
478 $ cat large2
480 large2 for linear merge (conflict with normal file)
479 large2 for linear merge (conflict with normal file)
481 $ cat .hglf/large2
480 $ cat .hglf/large2
482 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
481 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
483
482
484 (internal linear merging at "hg unbundle --update")
483 (internal linear merging at "hg unbundle --update")
485
484
486 $ hg update -q -C 2
485 $ hg update -q -C 2
487 $ hg rollback -q
486 $ hg rollback -q
488
487
489 $ echo 'large1 for linear merge (conflict)' > large1
488 $ echo 'large1 for linear merge (conflict)' > large1
490 $ echo 'large2 for linear merge (conflict with normal file)' > large2
489 $ echo 'large2 for linear merge (conflict with normal file)' > large2
491 $ hg unbundle --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-2e7b195d-backup.hg
490 $ hg unbundle --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-2e7b195d-backup.hg
492 adding changesets
491 adding changesets
493 adding manifests
492 adding manifests
494 adding file changes
493 adding file changes
495 added 3 changesets with 5 changes to 5 files
494 added 3 changesets with 5 changes to 5 files
496 new changesets 9530e27857f7:d65e59e952a9 (3 drafts)
495 new changesets 9530e27857f7:d65e59e952a9 (3 drafts)
497 remote turned local largefile large2 into a normal file
496 remote turned local largefile large2 into a normal file
498 keep (l)argefile or use (n)ormal file? l
497 keep (l)argefile or use (n)ormal file? l
499 largefile large1 has a merge conflict
498 largefile large1 has a merge conflict
500 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
499 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
501 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
500 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
502 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
501 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
503 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
502 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
504 updated to "d65e59e952a9: #5"
503 updated to "d65e59e952a9: #5"
505 1 other heads for branch "default"
504 1 other heads for branch "default"
506
505
507 $ hg status -A large1
506 $ hg status -A large1
508 M large1
507 M large1
509 $ cat large1
508 $ cat large1
510 large1 for linear merge (conflict)
509 large1 for linear merge (conflict)
511 $ cat .hglf/large1
510 $ cat .hglf/large1
512 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
511 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
513 $ hg status -A large2
512 $ hg status -A large2
514 A large2
513 A large2
515 $ cat large2
514 $ cat large2
516 large2 for linear merge (conflict with normal file)
515 large2 for linear merge (conflict with normal file)
517 $ cat .hglf/large2
516 $ cat .hglf/large2
518 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
517 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
519
518
520 (internal linear merging in subrepo at "hg update")
519 (internal linear merging in subrepo at "hg update")
521
520
522 $ cd ..
521 $ cd ..
523 $ hg init subparent
522 $ hg init subparent
524 $ cd subparent
523 $ cd subparent
525
524
526 $ hg clone -q -u 2 ../repo sub
525 $ hg clone -q -u 2 ../repo sub
527 $ cat > .hgsub <<EOF
526 $ cat > .hgsub <<EOF
528 > sub = sub
527 > sub = sub
529 > EOF
528 > EOF
530 $ hg add .hgsub
529 $ hg add .hgsub
531 $ hg commit -m '#0@parent'
530 $ hg commit -m '#0@parent'
532 $ cat .hgsubstate
531 $ cat .hgsubstate
533 f74e50bd9e5594b7cf1e6c5cbab86ddd25f3ca2f sub
532 f74e50bd9e5594b7cf1e6c5cbab86ddd25f3ca2f sub
534 $ hg -R sub update -q
533 $ hg -R sub update -q
535 $ hg commit -m '#1@parent'
534 $ hg commit -m '#1@parent'
536 $ cat .hgsubstate
535 $ cat .hgsubstate
537 d65e59e952a9638e2ce863b41a420ca723dd3e8d sub
536 d65e59e952a9638e2ce863b41a420ca723dd3e8d sub
538 $ hg update -q 0
537 $ hg update -q 0
539
538
540 $ echo 'large1 for linear merge (conflict)' > sub/large1
539 $ echo 'large1 for linear merge (conflict)' > sub/large1
541 $ echo 'large2 for linear merge (conflict with normal file)' > sub/large2
540 $ echo 'large2 for linear merge (conflict with normal file)' > sub/large2
542 $ hg update --config ui.interactive=True --config debug.dirstate.delaywrite=2 <<EOF
541 $ hg update --config ui.interactive=True --config debug.dirstate.delaywrite=2 <<EOF
543 > m
542 > m
544 > r
543 > r
545 > l
544 > l
546 > l
545 > l
547 > EOF
546 > EOF
548 subrepository sub diverged (local revision: f74e50bd9e55, remote revision: d65e59e952a9)
547 subrepository sub diverged (local revision: f74e50bd9e55, remote revision: d65e59e952a9)
549 (M)erge, keep (l)ocal [working copy] or keep (r)emote [destination]? m
548 (M)erge, keep (l)ocal [working copy] or keep (r)emote [destination]? m
550 subrepository sources for sub differ (in checked out version)
549 subrepository sources for sub differ (in checked out version)
551 use (l)ocal source (f74e50bd9e55) or (r)emote source (d65e59e952a9)? r
550 use (l)ocal source (f74e50bd9e55) or (r)emote source (d65e59e952a9)? r
552 remote turned local largefile large2 into a normal file
551 remote turned local largefile large2 into a normal file
553 keep (l)argefile or use (n)ormal file? l
552 keep (l)argefile or use (n)ormal file? l
554 largefile large1 has a merge conflict
553 largefile large1 has a merge conflict
555 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
554 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
556 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
555 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
557 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
556 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
558 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
557 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
559 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
558 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
560
559
561 $ hg -R sub status -A sub/large1
560 $ hg -R sub status -A sub/large1
562 M sub/large1
561 M sub/large1
563 $ cat sub/large1
562 $ cat sub/large1
564 large1 for linear merge (conflict)
563 large1 for linear merge (conflict)
565 $ cat sub/.hglf/large1
564 $ cat sub/.hglf/large1
566 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
565 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
567 $ hg -R sub status -A sub/large2
566 $ hg -R sub status -A sub/large2
568 A sub/large2
567 A sub/large2
569 $ cat sub/large2
568 $ cat sub/large2
570 large2 for linear merge (conflict with normal file)
569 large2 for linear merge (conflict with normal file)
571 $ cat sub/.hglf/large2
570 $ cat sub/.hglf/large2
572 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
571 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
573
572
574 $ cd ..
573 $ cd ..
575 $ cd repo
574 $ cd repo
576
575
577 Test that rebase updates largefiles in the working directory even if
576 Test that rebase updates largefiles in the working directory even if
578 it is aborted by conflict.
577 it is aborted by conflict.
579
578
580 $ hg update -q -C 3
579 $ hg update -q -C 3
581 $ cat .hglf/large1
580 $ cat .hglf/large1
582 e5bb990443d6a92aaf7223813720f7566c9dd05b
581 e5bb990443d6a92aaf7223813720f7566c9dd05b
583 $ cat large1
582 $ cat large1
584 large1 in #3
583 large1 in #3
585 $ hg rebase -s 1 -d 3 --keep --config ui.interactive=True <<EOF
584 $ hg rebase -s 1 -d 3 --keep --config ui.interactive=True <<EOF
586 > o
585 > o
587 > EOF
586 > EOF
588 rebasing 1:72518492caa6 "#1"
587 rebasing 1:72518492caa6 "#1"
589 largefile large1 has a merge conflict
588 largefile large1 has a merge conflict
590 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
589 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
591 keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or
590 keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or
592 take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o
591 take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o
593 merging normal1
592 merging normal1
594 warning: conflicts while merging normal1! (edit, then use 'hg resolve --mark')
593 warning: conflicts while merging normal1! (edit, then use 'hg resolve --mark')
595 unresolved conflicts (see hg resolve, then hg rebase --continue)
594 unresolved conflicts (see hg resolve, then hg rebase --continue)
596 [1]
595 [1]
597 $ cat .hglf/large1
596 $ cat .hglf/large1
598 58e24f733a964da346e2407a2bee99d9001184f5
597 58e24f733a964da346e2407a2bee99d9001184f5
599 $ cat large1
598 $ cat large1
600 large1 in #1
599 large1 in #1
601 $ rm normal1.orig
600 $ rm normal1.orig
602
601
603 Test that rebase updates standins for manually modified largefiles at
602 Test that rebase updates standins for manually modified largefiles at
604 the 1st commit of resuming.
603 the 1st commit of resuming.
605
604
606 $ echo "manually modified before 'hg rebase --continue'" > large1
605 $ echo "manually modified before 'hg rebase --continue'" > large1
607 $ hg resolve -m normal1
606 $ hg resolve -m normal1
608 (no more unresolved files)
607 (no more unresolved files)
609 continue: hg rebase --continue
608 continue: hg rebase --continue
610 $ hg rebase --continue --config ui.interactive=True <<EOF
609 $ hg rebase --continue --config ui.interactive=True <<EOF
611 > c
610 > c
612 > EOF
611 > EOF
613 rebasing 1:72518492caa6 "#1"
612 rebasing 1:72518492caa6 "#1"
614 rebasing 4:07d6153b5c04 "#4"
613 rebasing 4:07d6153b5c04 "#4"
615 file '.hglf/large1' was deleted in other [source] but was modified in local [dest].
614 file '.hglf/large1' was deleted in other [source] but was modified in local [dest].
616 What do you want to do?
615 What do you want to do?
617 use (c)hanged version, (d)elete, or leave (u)nresolved? c
616 use (c)hanged version, (d)elete, or leave (u)nresolved? c
618
617
619 $ hg diff -c "tip~1" --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
618 $ hg diff -c "tip~1" --nodates .hglf/large1 | grep '^[+-][0-9a-z]'
620 -e5bb990443d6a92aaf7223813720f7566c9dd05b
619 -e5bb990443d6a92aaf7223813720f7566c9dd05b
621 +8a4f783556e7dea21139ca0466eafce954c75c13
620 +8a4f783556e7dea21139ca0466eafce954c75c13
622 $ rm -f large1
621 $ rm -f large1
623 $ hg update -q -C tip
622 $ hg update -q -C tip
624 $ cat large1
623 $ cat large1
625 manually modified before 'hg rebase --continue'
624 manually modified before 'hg rebase --continue'
626
625
627 Test that transplant updates largefiles, of which standins are safely
626 Test that transplant updates largefiles, of which standins are safely
628 changed, even if it is aborted by conflict of other.
627 changed, even if it is aborted by conflict of other.
629
628
630 $ hg update -q -C 5
629 $ hg update -q -C 5
631 $ cat .hglf/large1
630 $ cat .hglf/large1
632 e5bb990443d6a92aaf7223813720f7566c9dd05b
631 e5bb990443d6a92aaf7223813720f7566c9dd05b
633 $ cat large1
632 $ cat large1
634 large1 in #3
633 large1 in #3
635 $ hg diff -c 4 .hglf/largeX | grep '^[+-][0-9a-z]'
634 $ hg diff -c 4 .hglf/largeX | grep '^[+-][0-9a-z]'
636 +fa44618ea25181aff4f48b70428294790cec9f61
635 +fa44618ea25181aff4f48b70428294790cec9f61
637 $ hg transplant 4
636 $ hg transplant 4
638 applying 07d6153b5c04
637 applying 07d6153b5c04
639 patching file .hglf/large1
638 patching file .hglf/large1
640 Hunk #1 FAILED at 0
639 Hunk #1 FAILED at 0
641 1 out of 1 hunks FAILED -- saving rejects to file .hglf/large1.rej
640 1 out of 1 hunks FAILED -- saving rejects to file .hglf/large1.rej
642 patch failed to apply
641 patch failed to apply
643 abort: fix up the working directory and run hg transplant --continue
642 abort: fix up the working directory and run hg transplant --continue
644 [255]
643 [255]
645 $ hg status -A large1
644 $ hg status -A large1
646 C large1
645 C large1
647 $ cat .hglf/large1
646 $ cat .hglf/large1
648 e5bb990443d6a92aaf7223813720f7566c9dd05b
647 e5bb990443d6a92aaf7223813720f7566c9dd05b
649 $ cat large1
648 $ cat large1
650 large1 in #3
649 large1 in #3
651 $ hg status -A largeX
650 $ hg status -A largeX
652 A largeX
651 A largeX
653 $ cat .hglf/largeX
652 $ cat .hglf/largeX
654 fa44618ea25181aff4f48b70428294790cec9f61
653 fa44618ea25181aff4f48b70428294790cec9f61
655 $ cat largeX
654 $ cat largeX
656 largeX
655 largeX
657
656
658 Test that transplant updates standins for manually modified largefiles
657 Test that transplant updates standins for manually modified largefiles
659 at the 1st commit of resuming.
658 at the 1st commit of resuming.
660
659
661 $ echo "manually modified before 'hg transplant --continue'" > large1
660 $ echo "manually modified before 'hg transplant --continue'" > large1
662 $ hg transplant --continue
661 $ hg transplant --continue
663 07d6153b5c04 transplanted as f1bf30eb88cc
662 07d6153b5c04 transplanted as f1bf30eb88cc
664 $ hg diff -c tip .hglf/large1 | grep '^[+-][0-9a-z]'
663 $ hg diff -c tip .hglf/large1 | grep '^[+-][0-9a-z]'
665 -e5bb990443d6a92aaf7223813720f7566c9dd05b
664 -e5bb990443d6a92aaf7223813720f7566c9dd05b
666 +6a4f36d4075fbe0f30ec1d26ca44e63c05903671
665 +6a4f36d4075fbe0f30ec1d26ca44e63c05903671
667 $ rm -f large1
666 $ rm -f large1
668 $ hg update -q -C tip
667 $ hg update -q -C tip
669 $ cat large1
668 $ cat large1
670 manually modified before 'hg transplant --continue'
669 manually modified before 'hg transplant --continue'
671
670
672 Test that "hg status" doesn't show removal of largefiles not managed
671 Test that "hg status" doesn't show removal of largefiles not managed
673 in the target context.
672 in the target context.
674
673
675 $ hg update -q -C 4
674 $ hg update -q -C 4
676 $ hg remove largeX
675 $ hg remove largeX
677 $ hg status -A largeX
676 $ hg status -A largeX
678 R largeX
677 R largeX
679 $ hg status -A --rev '.^1' largeX
678 $ hg status -A --rev '.^1' largeX
680
679
681 #if execbit
680 #if execbit
682
681
683 Test that "hg status" against revisions other than parent notices exec
682 Test that "hg status" against revisions other than parent notices exec
684 bit changes of largefiles.
683 bit changes of largefiles.
685
684
686 $ hg update -q -C 4
685 $ hg update -q -C 4
687
686
688 (the case that large2 doesn't have exec bit in the target context but
687 (the case that large2 doesn't have exec bit in the target context but
689 in the working context)
688 in the working context)
690
689
691 $ chmod +x large2
690 $ chmod +x large2
692 $ hg status -A --rev 0 large2
691 $ hg status -A --rev 0 large2
693 M large2
692 M large2
694 $ hg commit -m 'chmod +x large2'
693 $ hg commit -m 'chmod +x large2'
695
694
696 (the case that large2 has exec bit in the target context but not in
695 (the case that large2 has exec bit in the target context but not in
697 the working context)
696 the working context)
698
697
699 $ echo dummy > dummy
698 $ echo dummy > dummy
700 $ hg add dummy
699 $ hg add dummy
701 $ hg commit -m 'revision for separation'
700 $ hg commit -m 'revision for separation'
702 $ chmod -x large2
701 $ chmod -x large2
703 $ hg status -A --rev '.^1' large2
702 $ hg status -A --rev '.^1' large2
704 M large2
703 M large2
705
704
706 #else
705 #else
707
706
708 Test that "hg status" against revisions other than parent ignores exec
707 Test that "hg status" against revisions other than parent ignores exec
709 bit correctly on the platform being unaware of it.
708 bit correctly on the platform being unaware of it.
710
709
711 $ hg update -q -C 4
710 $ hg update -q -C 4
712
711
713 $ cat > ../exec-bit.patch <<EOF
712 $ cat > ../exec-bit.patch <<EOF
714 > # HG changeset patch
713 > # HG changeset patch
715 > # User test
714 > # User test
716 > # Date 0 0
715 > # Date 0 0
717 > # Thu Jan 01 00:00:00 1970 +0000
716 > # Thu Jan 01 00:00:00 1970 +0000
718 > # Node ID be1b433a65b12b27b5519d92213e14f7e1769b90
717 > # Node ID be1b433a65b12b27b5519d92213e14f7e1769b90
719 > # Parent 07d6153b5c04313efb75deec9ba577de7faeb727
718 > # Parent 07d6153b5c04313efb75deec9ba577de7faeb727
720 > chmod +x large2
719 > chmod +x large2
721 >
720 >
722 > diff --git a/.hglf/large2 b/.hglf/large2
721 > diff --git a/.hglf/large2 b/.hglf/large2
723 > old mode 100644
722 > old mode 100644
724 > new mode 100755
723 > new mode 100755
725 > EOF
724 > EOF
726 $ hg import --exact --bypass ../exec-bit.patch
725 $ hg import --exact --bypass ../exec-bit.patch
727 applying ../exec-bit.patch
726 applying ../exec-bit.patch
728 $ hg status -A --rev tip large2
727 $ hg status -A --rev tip large2
729 C large2
728 C large2
730
729
731 #endif
730 #endif
732
731
733 The fileset revset is evaluated for each revision, instead of once on wdir(),
732 The fileset revset is evaluated for each revision, instead of once on wdir(),
734 and then patterns matched on each revision. Here, no exec bits are set in
733 and then patterns matched on each revision. Here, no exec bits are set in
735 wdir(), but a matching revision is detected.
734 wdir(), but a matching revision is detected.
736
735
737 (Teach large2 is not an executable. Maybe this is a bug of largefiles.)
736 (Teach large2 is not an executable. Maybe this is a bug of largefiles.)
738 #if execbit
737 #if execbit
739 $ chmod -x .hglf/large2
738 $ chmod -x .hglf/large2
740 #endif
739 #endif
741
740
742 $ hg files 'set:exec()'
741 $ hg files 'set:exec()'
743 [1]
742 [1]
744 $ hg log -qr 'file("set:exec()")'
743 $ hg log -qr 'file("set:exec()")'
745 9:be1b433a65b1
744 9:be1b433a65b1
746
745
747 Test a fatal error interrupting an update. Verify that status report dirty
746 Test a fatal error interrupting an update. Verify that status report dirty
748 files correctly after an interrupted update. Also verify that checking all
747 files correctly after an interrupted update. Also verify that checking all
749 hashes reveals it isn't clean.
748 hashes reveals it isn't clean.
750
749
751 Start with clean dirstates:
750 Start with clean dirstates:
752 $ hg up --quiet --clean --rev "8^"
751 $ hg up --quiet --clean --rev "8^"
753 $ sleep 1
752 $ sleep 1
754 $ hg st
753 $ hg st
755 Update standins without updating largefiles - large1 is modified and largeX is
754 Update standins without updating largefiles - large1 is modified and largeX is
756 added:
755 added:
757 $ cat << EOF > ../crashupdatelfiles.py
756 $ cat << EOF > ../crashupdatelfiles.py
758 > import hgext.largefiles.lfutil
757 > import hgext.largefiles.lfutil
759 > def getlfilestoupdate(oldstandins, newstandins):
758 > def getlfilestoupdate(oldstandins, newstandins):
760 > raise SystemExit(7)
759 > raise SystemExit(7)
761 > hgext.largefiles.lfutil.getlfilestoupdate = getlfilestoupdate
760 > hgext.largefiles.lfutil.getlfilestoupdate = getlfilestoupdate
762 > EOF
761 > EOF
763 $ hg up -Cr "8" --config extensions.crashupdatelfiles=../crashupdatelfiles.py
762 $ hg up -Cr "8" --config extensions.crashupdatelfiles=../crashupdatelfiles.py
764 [7]
763 [7]
765 Check large1 content and status ... and that update will undo modifications:
764 Check large1 content and status ... and that update will undo modifications:
766 $ cat large1
765 $ cat large1
767 large1 in #3
766 large1 in #3
768 $ hg st
767 $ hg st
769 M large1
768 M large1
770 ! largeX
769 ! largeX
771 $ hg up -Cr .
770 $ hg up -Cr .
772 getting changed largefiles
771 getting changed largefiles
773 2 largefiles updated, 0 removed
772 2 largefiles updated, 0 removed
774 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
773 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
775 $ cat large1
774 $ cat large1
776 manually modified before 'hg transplant --continue'
775 manually modified before 'hg transplant --continue'
777 $ hg st
776 $ hg st
778 Force largefiles rehashing and check that all changes have been caught by
777 Force largefiles rehashing and check that all changes have been caught by
779 status and update:
778 status and update:
780 $ rm .hg/largefiles/dirstate
779 $ rm .hg/largefiles/dirstate
781 $ hg st
780 $ hg st
782
781
783 $ cd ..
782 $ cd ..
784
783
785 Test that "hg convert" avoids copying largefiles from the working
784 Test that "hg convert" avoids copying largefiles from the working
786 directory into store, because "hg convert" doesn't update largefiles
785 directory into store, because "hg convert" doesn't update largefiles
787 in the working directory (removing files under ".cache/largefiles"
786 in the working directory (removing files under ".cache/largefiles"
788 forces "hg convert" to copy corresponding largefiles)
787 forces "hg convert" to copy corresponding largefiles)
789
788
790 $ cat >> $HGRCPATH <<EOF
789 $ cat >> $HGRCPATH <<EOF
791 > [extensions]
790 > [extensions]
792 > convert =
791 > convert =
793 > EOF
792 > EOF
794
793
795 $ rm $TESTTMP/.cache/largefiles/6a4f36d4075fbe0f30ec1d26ca44e63c05903671
794 $ rm $TESTTMP/.cache/largefiles/6a4f36d4075fbe0f30ec1d26ca44e63c05903671
796 $ hg convert -q repo repo.converted
795 $ hg convert -q repo repo.converted
@@ -1,397 +1,397 b''
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
2 $ mkdir "${USERCACHE}"
2 $ mkdir "${USERCACHE}"
3 $ cat >> $HGRCPATH <<EOF
3 $ cat >> $HGRCPATH <<EOF
4 > [extensions]
4 > [extensions]
5 > largefiles =
5 > largefiles =
6 > share =
6 > share =
7 > strip =
7 > strip =
8 > convert =
8 > convert =
9 > [largefiles]
9 > [largefiles]
10 > minsize = 0.5
10 > minsize = 0.5
11 > patterns = **.other
11 > patterns = **.other
12 > **.dat
12 > **.dat
13 > usercache=${USERCACHE}
13 > usercache=${USERCACHE}
14 > EOF
14 > EOF
15
15
16 "lfconvert" works
16 "lfconvert" works
17 $ hg init bigfile-repo
17 $ hg init bigfile-repo
18 $ cd bigfile-repo
18 $ cd bigfile-repo
19 $ cat >> .hg/hgrc <<EOF
19 $ cat >> .hg/hgrc <<EOF
20 > [extensions]
20 > [extensions]
21 > largefiles = !
21 > largefiles = !
22 > EOF
22 > EOF
23 $ mkdir sub
23 $ mkdir sub
24 $ dd if=/dev/zero bs=1k count=256 > large 2> /dev/null
24 $ dd if=/dev/zero bs=1k count=256 > large 2> /dev/null
25 $ dd if=/dev/zero bs=1k count=256 > large2 2> /dev/null
25 $ dd if=/dev/zero bs=1k count=256 > large2 2> /dev/null
26 $ echo normal > normal1
26 $ echo normal > normal1
27 $ echo alsonormal > sub/normal2
27 $ echo alsonormal > sub/normal2
28 $ dd if=/dev/zero bs=1k count=10 > sub/maybelarge.dat 2> /dev/null
28 $ dd if=/dev/zero bs=1k count=10 > sub/maybelarge.dat 2> /dev/null
29 $ hg addremove
29 $ hg addremove
30 adding large
30 adding large
31 adding large2
31 adding large2
32 adding normal1
32 adding normal1
33 adding sub/maybelarge.dat
33 adding sub/maybelarge.dat
34 adding sub/normal2
34 adding sub/normal2
35 $ hg commit -m"add large, normal1" large normal1
35 $ hg commit -m"add large, normal1" large normal1
36 $ hg commit -m"add sub/*" sub
36 $ hg commit -m"add sub/*" sub
37
37
38 Test tag parsing
38 Test tag parsing
39 $ cat >> .hgtags <<EOF
39 $ cat >> .hgtags <<EOF
40 > IncorrectlyFormattedTag!
40 > IncorrectlyFormattedTag!
41 > invalidhash sometag
41 > invalidhash sometag
42 > 0123456789abcdef anothertag
42 > 0123456789abcdef anothertag
43 > EOF
43 > EOF
44 $ hg add .hgtags
44 $ hg add .hgtags
45 $ hg commit -m"add large2" large2 .hgtags
45 $ hg commit -m"add large2" large2 .hgtags
46
46
47 Test link+rename largefile codepath
47 Test link+rename largefile codepath
48 $ [ -d .hg/largefiles ] && echo fail || echo pass
48 $ [ -d .hg/largefiles ] && echo fail || echo pass
49 pass
49 pass
50 $ cd ..
50 $ cd ..
51 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
51 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
52 initializing destination largefiles-repo
52 initializing destination largefiles-repo
53 skipping incorrectly formatted tag IncorrectlyFormattedTag!
53 skipping incorrectly formatted tag IncorrectlyFormattedTag!
54 skipping incorrectly formatted id invalidhash
54 skipping incorrectly formatted id invalidhash
55 no mapping for id 0123456789abcdef
55 no mapping for id 0123456789abcdef
56 #if symlink
56 #if symlink
57 $ hg --cwd bigfile-repo rename large2 large3
57 $ hg --cwd bigfile-repo rename large2 large3
58 $ ln -sf large bigfile-repo/large3
58 $ ln -sf large bigfile-repo/large3
59 $ hg --cwd bigfile-repo commit -m"make large2 a symlink" large2 large3
59 $ hg --cwd bigfile-repo commit -m"make large2 a symlink" large2 large3
60 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo-symlink
60 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo-symlink
61 initializing destination largefiles-repo-symlink
61 initializing destination largefiles-repo-symlink
62 skipping incorrectly formatted tag IncorrectlyFormattedTag!
62 skipping incorrectly formatted tag IncorrectlyFormattedTag!
63 skipping incorrectly formatted id invalidhash
63 skipping incorrectly formatted id invalidhash
64 no mapping for id 0123456789abcdef
64 no mapping for id 0123456789abcdef
65 abort: renamed/copied largefile large3 becomes symlink
65 abort: renamed/copied largefile large3 becomes symlink
66 [255]
66 [255]
67 #endif
67 #endif
68 $ cd bigfile-repo
68 $ cd bigfile-repo
69 $ hg strip --no-backup 2
69 $ hg strip --no-backup 2
70 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
70 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
71 $ cd ..
71 $ cd ..
72 $ rm -rf largefiles-repo largefiles-repo-symlink
72 $ rm -rf largefiles-repo largefiles-repo-symlink
73
73
74 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
74 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
75 initializing destination largefiles-repo
75 initializing destination largefiles-repo
76
76
77 "lfconvert" converts content correctly
77 "lfconvert" converts content correctly
78 $ cd largefiles-repo
78 $ cd largefiles-repo
79 $ hg up
79 $ hg up
80 getting changed largefiles
80 getting changed largefiles
81 2 largefiles updated, 0 removed
81 2 largefiles updated, 0 removed
82 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
82 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 $ hg locate
83 $ hg locate
84 .hglf/large
84 .hglf/large
85 .hglf/sub/maybelarge.dat
85 .hglf/sub/maybelarge.dat
86 normal1
86 normal1
87 sub/normal2
87 sub/normal2
88 $ cat normal1
88 $ cat normal1
89 normal
89 normal
90 $ cat sub/normal2
90 $ cat sub/normal2
91 alsonormal
91 alsonormal
92 $ md5sum.py large sub/maybelarge.dat
92 $ md5sum.py large sub/maybelarge.dat
93 ec87a838931d4d5d2e94a04644788a55 large
93 ec87a838931d4d5d2e94a04644788a55 large
94 1276481102f218c981e0324180bafd9f sub/maybelarge.dat
94 1276481102f218c981e0324180bafd9f sub/maybelarge.dat
95
95
96 "lfconvert" adds 'largefiles' to .hg/requires.
96 "lfconvert" adds 'largefiles' to .hg/requires.
97 $ cat .hg/requires
97 $ cat .hg/requires
98 dotencode
98 dotencode
99 fncache
99 fncache
100 generaldelta
100 generaldelta
101 largefiles
101 largefiles
102 revlogv1
102 revlogv1
103 store
103 store
104 testonly-simplestore (reposimplestore !)
104 testonly-simplestore (reposimplestore !)
105
105
106 "lfconvert" includes a newline at the end of the standin files.
106 "lfconvert" includes a newline at the end of the standin files.
107 $ cat .hglf/large .hglf/sub/maybelarge.dat
107 $ cat .hglf/large .hglf/sub/maybelarge.dat
108 2e000fa7e85759c7f4c254d4d9c33ef481e459a7
108 2e000fa7e85759c7f4c254d4d9c33ef481e459a7
109 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
109 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
110 $ cd ..
110 $ cd ..
111
111
112 add some changesets to rename/remove/merge
112 add some changesets to rename/remove/merge
113 $ cd bigfile-repo
113 $ cd bigfile-repo
114 $ hg mv -q sub stuff
114 $ hg mv -q sub stuff
115 $ hg commit -m"rename sub/ to stuff/"
115 $ hg commit -m"rename sub/ to stuff/"
116 $ hg update -q 1
116 $ hg update -q 1
117 $ echo blah >> normal3
117 $ echo blah >> normal3
118 $ echo blah >> sub/normal2
118 $ echo blah >> sub/normal2
119 $ echo blah >> sub/maybelarge.dat
119 $ echo blah >> sub/maybelarge.dat
120 $ md5sum.py sub/maybelarge.dat
120 $ md5sum.py sub/maybelarge.dat
121 1dd0b99ff80e19cff409702a1d3f5e15 sub/maybelarge.dat
121 1dd0b99ff80e19cff409702a1d3f5e15 sub/maybelarge.dat
122 $ hg commit -A -m"add normal3, modify sub/*"
122 $ hg commit -A -m"add normal3, modify sub/*"
123 adding normal3
123 adding normal3
124 created new head
124 created new head
125 $ hg rm large normal3
125 $ hg rm large normal3
126 $ hg commit -q -m"remove large, normal3"
126 $ hg commit -q -m"remove large, normal3"
127 $ HGMERGE= hg merge --config ui.merge=internal:merge
127 $ hg merge
128 tool internal:merge (for pattern stuff/maybelarge.dat) can't handle binary
128 tool internal:merge (for pattern stuff/maybelarge.dat) can't handle binary
129 no tool found to merge stuff/maybelarge.dat
129 no tool found to merge stuff/maybelarge.dat
130 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for stuff/maybelarge.dat? u
130 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for stuff/maybelarge.dat? u
131 merging sub/normal2 and stuff/normal2 to stuff/normal2
131 merging sub/normal2 and stuff/normal2 to stuff/normal2
132 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
132 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
133 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
133 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
134 [1]
134 [1]
135 $ hg cat -r . sub/maybelarge.dat > stuff/maybelarge.dat
135 $ hg cat -r . sub/maybelarge.dat > stuff/maybelarge.dat
136 $ hg resolve -m stuff/maybelarge.dat
136 $ hg resolve -m stuff/maybelarge.dat
137 (no more unresolved files)
137 (no more unresolved files)
138 $ hg commit -m"merge"
138 $ hg commit -m"merge"
139 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
139 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
140 @ 5:4884f215abda merge
140 @ 5:4884f215abda merge
141 |\
141 |\
142 | o 4:7285f817b77e remove large, normal3
142 | o 4:7285f817b77e remove large, normal3
143 | |
143 | |
144 | o 3:67e3892e3534 add normal3, modify sub/*
144 | o 3:67e3892e3534 add normal3, modify sub/*
145 | |
145 | |
146 o | 2:c96c8beb5d56 rename sub/ to stuff/
146 o | 2:c96c8beb5d56 rename sub/ to stuff/
147 |/
147 |/
148 o 1:020c65d24e11 add sub/*
148 o 1:020c65d24e11 add sub/*
149 |
149 |
150 o 0:117b8328f97a add large, normal1
150 o 0:117b8328f97a add large, normal1
151
151
152 $ cd ..
152 $ cd ..
153
153
154 lfconvert with rename, merge, and remove
154 lfconvert with rename, merge, and remove
155 $ rm -rf largefiles-repo
155 $ rm -rf largefiles-repo
156 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
156 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
157 initializing destination largefiles-repo
157 initializing destination largefiles-repo
158 $ cd largefiles-repo
158 $ cd largefiles-repo
159 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
159 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
160 o 5:8e05f5f2b77e merge
160 o 5:8e05f5f2b77e merge
161 |\
161 |\
162 | o 4:a5a02de7a8e4 remove large, normal3
162 | o 4:a5a02de7a8e4 remove large, normal3
163 | |
163 | |
164 | o 3:55759520c76f add normal3, modify sub/*
164 | o 3:55759520c76f add normal3, modify sub/*
165 | |
165 | |
166 o | 2:261ad3f3f037 rename sub/ to stuff/
166 o | 2:261ad3f3f037 rename sub/ to stuff/
167 |/
167 |/
168 o 1:334e5237836d add sub/*
168 o 1:334e5237836d add sub/*
169 |
169 |
170 o 0:d4892ec57ce2 add large, normal1
170 o 0:d4892ec57ce2 add large, normal1
171
171
172 $ hg locate -r 2
172 $ hg locate -r 2
173 .hglf/large
173 .hglf/large
174 .hglf/stuff/maybelarge.dat
174 .hglf/stuff/maybelarge.dat
175 normal1
175 normal1
176 stuff/normal2
176 stuff/normal2
177 $ hg locate -r 3
177 $ hg locate -r 3
178 .hglf/large
178 .hglf/large
179 .hglf/sub/maybelarge.dat
179 .hglf/sub/maybelarge.dat
180 normal1
180 normal1
181 normal3
181 normal3
182 sub/normal2
182 sub/normal2
183 $ hg locate -r 4
183 $ hg locate -r 4
184 .hglf/sub/maybelarge.dat
184 .hglf/sub/maybelarge.dat
185 normal1
185 normal1
186 sub/normal2
186 sub/normal2
187 $ hg locate -r 5
187 $ hg locate -r 5
188 .hglf/stuff/maybelarge.dat
188 .hglf/stuff/maybelarge.dat
189 normal1
189 normal1
190 stuff/normal2
190 stuff/normal2
191 $ hg update
191 $ hg update
192 getting changed largefiles
192 getting changed largefiles
193 1 largefiles updated, 0 removed
193 1 largefiles updated, 0 removed
194 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
194 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
195 $ cat stuff/normal2
195 $ cat stuff/normal2
196 alsonormal
196 alsonormal
197 blah
197 blah
198 $ md5sum.py stuff/maybelarge.dat
198 $ md5sum.py stuff/maybelarge.dat
199 1dd0b99ff80e19cff409702a1d3f5e15 stuff/maybelarge.dat
199 1dd0b99ff80e19cff409702a1d3f5e15 stuff/maybelarge.dat
200 $ cat .hglf/stuff/maybelarge.dat
200 $ cat .hglf/stuff/maybelarge.dat
201 76236b6a2c6102826c61af4297dd738fb3b1de38
201 76236b6a2c6102826c61af4297dd738fb3b1de38
202 $ cd ..
202 $ cd ..
203
203
204 "lfconvert" error cases
204 "lfconvert" error cases
205 $ hg lfconvert http://localhost/foo foo
205 $ hg lfconvert http://localhost/foo foo
206 abort: http://localhost/foo is not a local Mercurial repo
206 abort: http://localhost/foo is not a local Mercurial repo
207 [255]
207 [255]
208 $ hg lfconvert foo ssh://localhost/foo
208 $ hg lfconvert foo ssh://localhost/foo
209 abort: ssh://localhost/foo is not a local Mercurial repo
209 abort: ssh://localhost/foo is not a local Mercurial repo
210 [255]
210 [255]
211 $ hg lfconvert nosuchrepo foo
211 $ hg lfconvert nosuchrepo foo
212 abort: repository nosuchrepo not found!
212 abort: repository nosuchrepo not found!
213 [255]
213 [255]
214 $ hg share -q -U bigfile-repo shared
214 $ hg share -q -U bigfile-repo shared
215 $ printf 'bogus' > shared/.hg/sharedpath
215 $ printf 'bogus' > shared/.hg/sharedpath
216 $ hg lfconvert shared foo
216 $ hg lfconvert shared foo
217 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus!
217 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus!
218 [255]
218 [255]
219 $ hg lfconvert bigfile-repo largefiles-repo
219 $ hg lfconvert bigfile-repo largefiles-repo
220 initializing destination largefiles-repo
220 initializing destination largefiles-repo
221 abort: repository largefiles-repo already exists!
221 abort: repository largefiles-repo already exists!
222 [255]
222 [255]
223
223
224 add another largefile to the new largefiles repo
224 add another largefile to the new largefiles repo
225 $ cd largefiles-repo
225 $ cd largefiles-repo
226 $ dd if=/dev/zero bs=1k count=1k > anotherlarge 2> /dev/null
226 $ dd if=/dev/zero bs=1k count=1k > anotherlarge 2> /dev/null
227 $ hg add --lfsize=1 anotherlarge
227 $ hg add --lfsize=1 anotherlarge
228 $ hg commit -m "add anotherlarge (should be a largefile)"
228 $ hg commit -m "add anotherlarge (should be a largefile)"
229 $ cat .hglf/anotherlarge
229 $ cat .hglf/anotherlarge
230 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
230 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
231 $ hg tag mytag
231 $ hg tag mytag
232 $ cd ..
232 $ cd ..
233
233
234 round-trip: converting back to a normal (non-largefiles) repo with
234 round-trip: converting back to a normal (non-largefiles) repo with
235 "lfconvert --to-normal" should give the same as ../bigfile-repo. The
235 "lfconvert --to-normal" should give the same as ../bigfile-repo. The
236 convert extension is disabled to show config items can be loaded without it.
236 convert extension is disabled to show config items can be loaded without it.
237 $ cd largefiles-repo
237 $ cd largefiles-repo
238 $ hg --config extensions.convert=! lfconvert --to-normal . ../normal-repo
238 $ hg --config extensions.convert=! lfconvert --to-normal . ../normal-repo
239 initializing destination ../normal-repo
239 initializing destination ../normal-repo
240 0 additional largefiles cached
240 0 additional largefiles cached
241 scanning source...
241 scanning source...
242 sorting...
242 sorting...
243 converting...
243 converting...
244 7 add large, normal1
244 7 add large, normal1
245 6 add sub/*
245 6 add sub/*
246 5 rename sub/ to stuff/
246 5 rename sub/ to stuff/
247 4 add normal3, modify sub/*
247 4 add normal3, modify sub/*
248 3 remove large, normal3
248 3 remove large, normal3
249 2 merge
249 2 merge
250 1 add anotherlarge (should be a largefile)
250 1 add anotherlarge (should be a largefile)
251 0 Added tag mytag for changeset abacddda7028
251 0 Added tag mytag for changeset abacddda7028
252 $ cd ../normal-repo
252 $ cd ../normal-repo
253 $ cat >> .hg/hgrc <<EOF
253 $ cat >> .hg/hgrc <<EOF
254 > [extensions]
254 > [extensions]
255 > largefiles = !
255 > largefiles = !
256 > EOF
256 > EOF
257
257
258 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
258 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
259 o 7:b5fedc110b9d Added tag mytag for changeset 867ab992ecf4
259 o 7:b5fedc110b9d Added tag mytag for changeset 867ab992ecf4
260 |
260 |
261 o 6:867ab992ecf4 add anotherlarge (should be a largefile)
261 o 6:867ab992ecf4 add anotherlarge (should be a largefile)
262 |
262 |
263 o 5:4884f215abda merge
263 o 5:4884f215abda merge
264 |\
264 |\
265 | o 4:7285f817b77e remove large, normal3
265 | o 4:7285f817b77e remove large, normal3
266 | |
266 | |
267 | o 3:67e3892e3534 add normal3, modify sub/*
267 | o 3:67e3892e3534 add normal3, modify sub/*
268 | |
268 | |
269 o | 2:c96c8beb5d56 rename sub/ to stuff/
269 o | 2:c96c8beb5d56 rename sub/ to stuff/
270 |/
270 |/
271 o 1:020c65d24e11 add sub/*
271 o 1:020c65d24e11 add sub/*
272 |
272 |
273 o 0:117b8328f97a add large, normal1
273 o 0:117b8328f97a add large, normal1
274
274
275 $ hg update
275 $ hg update
276 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
276 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
277 $ hg locate
277 $ hg locate
278 .hgtags
278 .hgtags
279 anotherlarge
279 anotherlarge
280 normal1
280 normal1
281 stuff/maybelarge.dat
281 stuff/maybelarge.dat
282 stuff/normal2
282 stuff/normal2
283 $ [ -d .hg/largefiles ] && echo fail || echo pass
283 $ [ -d .hg/largefiles ] && echo fail || echo pass
284 pass
284 pass
285
285
286 $ cd ..
286 $ cd ..
287
287
288 Clearing the usercache ensures that commitctx doesn't try to cache largefiles
288 Clearing the usercache ensures that commitctx doesn't try to cache largefiles
289 from the working dir on a convert.
289 from the working dir on a convert.
290 $ rm "${USERCACHE}"/*
290 $ rm "${USERCACHE}"/*
291 $ hg convert largefiles-repo
291 $ hg convert largefiles-repo
292 assuming destination largefiles-repo-hg
292 assuming destination largefiles-repo-hg
293 initializing destination largefiles-repo-hg repository
293 initializing destination largefiles-repo-hg repository
294 scanning source...
294 scanning source...
295 sorting...
295 sorting...
296 converting...
296 converting...
297 7 add large, normal1
297 7 add large, normal1
298 6 add sub/*
298 6 add sub/*
299 5 rename sub/ to stuff/
299 5 rename sub/ to stuff/
300 4 add normal3, modify sub/*
300 4 add normal3, modify sub/*
301 3 remove large, normal3
301 3 remove large, normal3
302 2 merge
302 2 merge
303 1 add anotherlarge (should be a largefile)
303 1 add anotherlarge (should be a largefile)
304 0 Added tag mytag for changeset abacddda7028
304 0 Added tag mytag for changeset abacddda7028
305
305
306 $ hg -R largefiles-repo-hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
306 $ hg -R largefiles-repo-hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
307 o 7:2f08f66459b7 Added tag mytag for changeset 17126745edfd
307 o 7:2f08f66459b7 Added tag mytag for changeset 17126745edfd
308 |
308 |
309 o 6:17126745edfd add anotherlarge (should be a largefile)
309 o 6:17126745edfd add anotherlarge (should be a largefile)
310 |
310 |
311 o 5:9cc5aa7204f0 merge
311 o 5:9cc5aa7204f0 merge
312 |\
312 |\
313 | o 4:a5a02de7a8e4 remove large, normal3
313 | o 4:a5a02de7a8e4 remove large, normal3
314 | |
314 | |
315 | o 3:55759520c76f add normal3, modify sub/*
315 | o 3:55759520c76f add normal3, modify sub/*
316 | |
316 | |
317 o | 2:261ad3f3f037 rename sub/ to stuff/
317 o | 2:261ad3f3f037 rename sub/ to stuff/
318 |/
318 |/
319 o 1:334e5237836d add sub/*
319 o 1:334e5237836d add sub/*
320 |
320 |
321 o 0:d4892ec57ce2 add large, normal1
321 o 0:d4892ec57ce2 add large, normal1
322
322
323 Verify will fail (for now) if the usercache is purged before converting, since
323 Verify will fail (for now) if the usercache is purged before converting, since
324 largefiles are not cached in the converted repo's local store by the conversion
324 largefiles are not cached in the converted repo's local store by the conversion
325 process.
325 process.
326 $ cd largefiles-repo-hg
326 $ cd largefiles-repo-hg
327 $ cat >> .hg/hgrc <<EOF
327 $ cat >> .hg/hgrc <<EOF
328 > [experimental]
328 > [experimental]
329 > evolution.createmarkers=True
329 > evolution.createmarkers=True
330 > EOF
330 > EOF
331 $ hg debugobsolete `hg log -r tip -T "{node}"`
331 $ hg debugobsolete `hg log -r tip -T "{node}"`
332 obsoleted 1 changesets
332 obsoleted 1 changesets
333 $ cd ..
333 $ cd ..
334
334
335 $ hg -R largefiles-repo-hg verify --large --lfa
335 $ hg -R largefiles-repo-hg verify --large --lfa
336 checking changesets
336 checking changesets
337 checking manifests
337 checking manifests
338 crosschecking files in changesets and manifests
338 crosschecking files in changesets and manifests
339 checking files
339 checking files
340 checked 8 changesets with 13 changes to 9 files
340 checked 8 changesets with 13 changes to 9 files
341 searching 7 changesets for largefiles
341 searching 7 changesets for largefiles
342 changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7
342 changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7
343 changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
343 changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
344 changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
344 changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
345 changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38
345 changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38
346 changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38
346 changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38
347 changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
347 changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
348 verified existence of 6 revisions of 4 largefiles
348 verified existence of 6 revisions of 4 largefiles
349 [1]
349 [1]
350 $ hg -R largefiles-repo-hg showconfig paths
350 $ hg -R largefiles-repo-hg showconfig paths
351 [1]
351 [1]
352
352
353
353
354 Avoid a traceback if a largefile isn't available (issue3519)
354 Avoid a traceback if a largefile isn't available (issue3519)
355
355
356 Ensure the largefile can be cached in the source if necessary
356 Ensure the largefile can be cached in the source if necessary
357 $ hg clone -U largefiles-repo issue3519
357 $ hg clone -U largefiles-repo issue3519
358 $ rm -f "${USERCACHE}"/*
358 $ rm -f "${USERCACHE}"/*
359 $ hg lfconvert --to-normal issue3519 normalized3519
359 $ hg lfconvert --to-normal issue3519 normalized3519
360 initializing destination normalized3519
360 initializing destination normalized3519
361 4 additional largefiles cached
361 4 additional largefiles cached
362 scanning source...
362 scanning source...
363 sorting...
363 sorting...
364 converting...
364 converting...
365 7 add large, normal1
365 7 add large, normal1
366 6 add sub/*
366 6 add sub/*
367 5 rename sub/ to stuff/
367 5 rename sub/ to stuff/
368 4 add normal3, modify sub/*
368 4 add normal3, modify sub/*
369 3 remove large, normal3
369 3 remove large, normal3
370 2 merge
370 2 merge
371 1 add anotherlarge (should be a largefile)
371 1 add anotherlarge (should be a largefile)
372 0 Added tag mytag for changeset abacddda7028
372 0 Added tag mytag for changeset abacddda7028
373
373
374 Ensure the abort message is useful if a largefile is entirely unavailable
374 Ensure the abort message is useful if a largefile is entirely unavailable
375 $ rm -rf normalized3519
375 $ rm -rf normalized3519
376 $ rm "${USERCACHE}"/*
376 $ rm "${USERCACHE}"/*
377 $ rm issue3519/.hg/largefiles/*
377 $ rm issue3519/.hg/largefiles/*
378 $ rm largefiles-repo/.hg/largefiles/*
378 $ rm largefiles-repo/.hg/largefiles/*
379 $ hg lfconvert --to-normal issue3519 normalized3519
379 $ hg lfconvert --to-normal issue3519 normalized3519
380 initializing destination normalized3519
380 initializing destination normalized3519
381 anotherlarge: largefile 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 not available from file:/*/$TESTTMP/largefiles-repo (glob)
381 anotherlarge: largefile 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 not available from file:/*/$TESTTMP/largefiles-repo (glob)
382 stuff/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
382 stuff/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
383 stuff/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
383 stuff/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
384 sub/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
384 sub/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
385 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
385 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
386 sub/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
386 sub/maybelarge.dat: largefile 76236b6a2c6102826c61af4297dd738fb3b1de38 not available from file:/*/$TESTTMP/largefiles-repo (glob)
387 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
387 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
388 stuff/maybelarge.dat: largefile 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c not available from file:/*/$TESTTMP/largefiles-repo (glob)
388 stuff/maybelarge.dat: largefile 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c not available from file:/*/$TESTTMP/largefiles-repo (glob)
389 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
389 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
390 sub/maybelarge.dat: largefile 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c not available from file:/*/$TESTTMP/largefiles-repo (glob)
390 sub/maybelarge.dat: largefile 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c not available from file:/*/$TESTTMP/largefiles-repo (glob)
391 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
391 large: largefile 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 not available from file:/*/$TESTTMP/largefiles-repo (glob)
392 0 additional largefiles cached
392 0 additional largefiles cached
393 11 largefiles failed to download
393 11 largefiles failed to download
394 abort: all largefiles must be present locally
394 abort: all largefiles must be present locally
395 [255]
395 [255]
396
396
397
397
@@ -1,459 +1,454 b''
1 #require symlink execbit
1 #require symlink execbit
2
2
3 $ unset HGMERGE
4 $ cat >> $HGRCPATH << EOF
5 > [ui]
6 > merge=:merge
7 > EOF
8 $ tellmeabout() {
3 $ tellmeabout() {
9 > if [ -h $1 ]; then
4 > if [ -h $1 ]; then
10 > echo $1 is a symlink:
5 > echo $1 is a symlink:
11 > $TESTDIR/readlink.py $1
6 > $TESTDIR/readlink.py $1
12 > elif [ -x $1 ]; then
7 > elif [ -x $1 ]; then
13 > echo $1 is an executable file with content:
8 > echo $1 is an executable file with content:
14 > cat $1
9 > cat $1
15 > else
10 > else
16 > echo $1 is a plain file with content:
11 > echo $1 is a plain file with content:
17 > cat $1
12 > cat $1
18 > fi
13 > fi
19 > }
14 > }
20
15
21 $ hg init test1
16 $ hg init test1
22 $ cd test1
17 $ cd test1
23
18
24 $ echo a > a
19 $ echo a > a
25 $ hg ci -Aqmadd
20 $ hg ci -Aqmadd
26 $ chmod +x a
21 $ chmod +x a
27 $ hg ci -mexecutable
22 $ hg ci -mexecutable
28
23
29 $ hg up -q 0
24 $ hg up -q 0
30 $ rm a
25 $ rm a
31 $ ln -s symlink a
26 $ ln -s symlink a
32 $ hg ci -msymlink
27 $ hg ci -msymlink
33 created new head
28 created new head
34
29
35 Symlink is local parent, executable is other:
30 Symlink is local parent, executable is other:
36
31
37 $ hg merge --debug
32 $ hg merge --debug
38 searching for copies back to rev 1
33 searching for copies back to rev 1
39 resolving manifests
34 resolving manifests
40 branchmerge: True, force: False, partial: False
35 branchmerge: True, force: False, partial: False
41 ancestor: c334dc3be0da, local: 521a1e40188f+, remote: 3574f3e69b1c
36 ancestor: c334dc3be0da, local: 521a1e40188f+, remote: 3574f3e69b1c
42 preserving a for resolve of a
37 preserving a for resolve of a
43 a: versions differ -> m (premerge)
38 a: versions differ -> m (premerge)
44 tool :merge (for pattern a) can't handle symlinks
39 tool internal:merge (for pattern a) can't handle symlinks
45 couldn't find merge tool hgmerge
40 couldn't find merge tool hgmerge
46 no tool found to merge a
41 no tool found to merge a
47 picked tool ':prompt' for a (binary False symlink True changedelete False)
42 picked tool ':prompt' for a (binary False symlink True changedelete False)
48 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for a? u
43 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for a? u
49 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
44 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
50 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
45 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
51 [1]
46 [1]
52
47
53 $ tellmeabout a
48 $ tellmeabout a
54 a is a symlink:
49 a is a symlink:
55 a -> symlink
50 a -> symlink
56 $ hg resolve a --tool internal:other
51 $ hg resolve a --tool internal:other
57 (no more unresolved files)
52 (no more unresolved files)
58 $ tellmeabout a
53 $ tellmeabout a
59 a is an executable file with content:
54 a is an executable file with content:
60 a
55 a
61 $ hg st
56 $ hg st
62 M a
57 M a
63 ? a.orig
58 ? a.orig
64
59
65 Symlink is other parent, executable is local:
60 Symlink is other parent, executable is local:
66
61
67 $ hg update -C 1
62 $ hg update -C 1
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
69
64
70 $ hg merge --debug --tool :union
65 $ hg merge --debug --tool :union
71 searching for copies back to rev 1
66 searching for copies back to rev 1
72 resolving manifests
67 resolving manifests
73 branchmerge: True, force: False, partial: False
68 branchmerge: True, force: False, partial: False
74 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
69 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
75 preserving a for resolve of a
70 preserving a for resolve of a
76 a: versions differ -> m (premerge)
71 a: versions differ -> m (premerge)
77 picked tool ':union' for a (binary False symlink True changedelete False)
72 picked tool ':union' for a (binary False symlink True changedelete False)
78 merging a
73 merging a
79 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
74 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
80 warning: internal :union cannot merge symlinks for a
75 warning: internal :union cannot merge symlinks for a
81 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
76 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
82 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
77 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
83 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
78 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
84 [1]
79 [1]
85
80
86 $ tellmeabout a
81 $ tellmeabout a
87 a is an executable file with content:
82 a is an executable file with content:
88 a
83 a
89
84
90 $ hg update -C 1
85 $ hg update -C 1
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
86 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
92
87
93 $ hg merge --debug --tool :merge3
88 $ hg merge --debug --tool :merge3
94 searching for copies back to rev 1
89 searching for copies back to rev 1
95 resolving manifests
90 resolving manifests
96 branchmerge: True, force: False, partial: False
91 branchmerge: True, force: False, partial: False
97 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
92 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
98 preserving a for resolve of a
93 preserving a for resolve of a
99 a: versions differ -> m (premerge)
94 a: versions differ -> m (premerge)
100 picked tool ':merge3' for a (binary False symlink True changedelete False)
95 picked tool ':merge3' for a (binary False symlink True changedelete False)
101 merging a
96 merging a
102 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
97 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
103 warning: internal :merge3 cannot merge symlinks for a
98 warning: internal :merge3 cannot merge symlinks for a
104 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
99 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
105 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
100 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
106 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
101 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
107 [1]
102 [1]
108
103
109 $ tellmeabout a
104 $ tellmeabout a
110 a is an executable file with content:
105 a is an executable file with content:
111 a
106 a
112
107
113 $ hg update -C 1
108 $ hg update -C 1
114 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
109 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
115
110
116 $ hg merge --debug --tool :merge-local
111 $ hg merge --debug --tool :merge-local
117 searching for copies back to rev 1
112 searching for copies back to rev 1
118 resolving manifests
113 resolving manifests
119 branchmerge: True, force: False, partial: False
114 branchmerge: True, force: False, partial: False
120 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
115 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
121 preserving a for resolve of a
116 preserving a for resolve of a
122 a: versions differ -> m (premerge)
117 a: versions differ -> m (premerge)
123 picked tool ':merge-local' for a (binary False symlink True changedelete False)
118 picked tool ':merge-local' for a (binary False symlink True changedelete False)
124 merging a
119 merging a
125 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
120 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
126 warning: internal :merge-local cannot merge symlinks for a
121 warning: internal :merge-local cannot merge symlinks for a
127 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
122 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
128 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
123 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
129 [1]
124 [1]
130
125
131 $ tellmeabout a
126 $ tellmeabout a
132 a is an executable file with content:
127 a is an executable file with content:
133 a
128 a
134
129
135 $ hg update -C 1
130 $ hg update -C 1
136 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
131 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
137
132
138 $ hg merge --debug --tool :merge-other
133 $ hg merge --debug --tool :merge-other
139 searching for copies back to rev 1
134 searching for copies back to rev 1
140 resolving manifests
135 resolving manifests
141 branchmerge: True, force: False, partial: False
136 branchmerge: True, force: False, partial: False
142 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
137 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
143 preserving a for resolve of a
138 preserving a for resolve of a
144 a: versions differ -> m (premerge)
139 a: versions differ -> m (premerge)
145 picked tool ':merge-other' for a (binary False symlink True changedelete False)
140 picked tool ':merge-other' for a (binary False symlink True changedelete False)
146 merging a
141 merging a
147 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
142 my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
148 warning: internal :merge-other cannot merge symlinks for a
143 warning: internal :merge-other cannot merge symlinks for a
149 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
144 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
150 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
145 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
151 [1]
146 [1]
152
147
153 $ tellmeabout a
148 $ tellmeabout a
154 a is an executable file with content:
149 a is an executable file with content:
155 a
150 a
156
151
157 Update to link without local change should get us a symlink (issue3316):
152 Update to link without local change should get us a symlink (issue3316):
158
153
159 $ hg up -C 0
154 $ hg up -C 0
160 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
155 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
161 $ hg up
156 $ hg up
162 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
157 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
163 updated to "521a1e40188f: symlink"
158 updated to "521a1e40188f: symlink"
164 1 other heads for branch "default"
159 1 other heads for branch "default"
165 $ hg st
160 $ hg st
166 ? a.orig
161 ? a.orig
167
162
168 Update to link with local change should cause a merge prompt (issue3200):
163 Update to link with local change should cause a merge prompt (issue3200):
169
164
170 $ hg up -Cq 0
165 $ hg up -Cq 0
171 $ echo data > a
166 $ echo data > a
172 $ HGMERGE= hg up -y --debug --config ui.merge=
167 $ HGMERGE= hg up -y --debug --config ui.merge=
173 searching for copies back to rev 2
168 searching for copies back to rev 2
174 resolving manifests
169 resolving manifests
175 branchmerge: False, force: False, partial: False
170 branchmerge: False, force: False, partial: False
176 ancestor: c334dc3be0da, local: c334dc3be0da+, remote: 521a1e40188f
171 ancestor: c334dc3be0da, local: c334dc3be0da+, remote: 521a1e40188f
177 preserving a for resolve of a
172 preserving a for resolve of a
178 a: versions differ -> m (premerge)
173 a: versions differ -> m (premerge)
179 (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re)
174 (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re)
180 no tool found to merge a
175 no tool found to merge a
181 picked tool ':prompt' for a (binary False symlink True changedelete False)
176 picked tool ':prompt' for a (binary False symlink True changedelete False)
182 keep (l)ocal [working copy], take (o)ther [destination], or leave (u)nresolved for a? u
177 keep (l)ocal [working copy], take (o)ther [destination], or leave (u)nresolved for a? u
183 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
178 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
184 use 'hg resolve' to retry unresolved file merges
179 use 'hg resolve' to retry unresolved file merges
185 updated to "521a1e40188f: symlink"
180 updated to "521a1e40188f: symlink"
186 1 other heads for branch "default"
181 1 other heads for branch "default"
187 [1]
182 [1]
188 $ hg diff --git
183 $ hg diff --git
189 diff --git a/a b/a
184 diff --git a/a b/a
190 old mode 120000
185 old mode 120000
191 new mode 100644
186 new mode 100644
192 --- a/a
187 --- a/a
193 +++ b/a
188 +++ b/a
194 @@ -1,1 +1,1 @@
189 @@ -1,1 +1,1 @@
195 -symlink
190 -symlink
196 \ No newline at end of file
191 \ No newline at end of file
197 +data
192 +data
198
193
199
194
200 Test only 'l' change - happens rarely, except when recovering from situations
195 Test only 'l' change - happens rarely, except when recovering from situations
201 where that was what happened.
196 where that was what happened.
202
197
203 $ hg init test2
198 $ hg init test2
204 $ cd test2
199 $ cd test2
205 $ printf base > f
200 $ printf base > f
206 $ hg ci -Aqm0
201 $ hg ci -Aqm0
207 $ echo file > f
202 $ echo file > f
208 $ echo content >> f
203 $ echo content >> f
209 $ hg ci -qm1
204 $ hg ci -qm1
210 $ hg up -qr0
205 $ hg up -qr0
211 $ rm f
206 $ rm f
212 $ ln -s base f
207 $ ln -s base f
213 $ hg ci -qm2
208 $ hg ci -qm2
214 $ hg merge
209 $ hg merge
215 tool :merge (for pattern f) can't handle symlinks
210 tool internal:merge (for pattern f) can't handle symlinks
216 no tool found to merge f
211 no tool found to merge f
217 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
212 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
218 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
213 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
219 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
214 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
220 [1]
215 [1]
221 $ tellmeabout f
216 $ tellmeabout f
222 f is a symlink:
217 f is a symlink:
223 f -> base
218 f -> base
224
219
225 $ hg up -Cqr1
220 $ hg up -Cqr1
226 $ hg merge
221 $ hg merge
227 tool :merge (for pattern f) can't handle symlinks
222 tool internal:merge (for pattern f) can't handle symlinks
228 no tool found to merge f
223 no tool found to merge f
229 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
224 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
230 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
225 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
231 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
226 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
232 [1]
227 [1]
233 $ tellmeabout f
228 $ tellmeabout f
234 f is a plain file with content:
229 f is a plain file with content:
235 file
230 file
236 content
231 content
237
232
238 $ cd ..
233 $ cd ..
239
234
240 Test removed 'x' flag merged with change to symlink
235 Test removed 'x' flag merged with change to symlink
241
236
242 $ hg init test3
237 $ hg init test3
243 $ cd test3
238 $ cd test3
244 $ echo f > f
239 $ echo f > f
245 $ chmod +x f
240 $ chmod +x f
246 $ hg ci -Aqm0
241 $ hg ci -Aqm0
247 $ chmod -x f
242 $ chmod -x f
248 $ hg ci -qm1
243 $ hg ci -qm1
249 $ hg up -qr0
244 $ hg up -qr0
250 $ rm f
245 $ rm f
251 $ ln -s dangling f
246 $ ln -s dangling f
252 $ hg ci -qm2
247 $ hg ci -qm2
253 $ hg merge
248 $ hg merge
254 tool :merge (for pattern f) can't handle symlinks
249 tool internal:merge (for pattern f) can't handle symlinks
255 no tool found to merge f
250 no tool found to merge f
256 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
251 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
257 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
252 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
258 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
253 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
259 [1]
254 [1]
260 $ tellmeabout f
255 $ tellmeabout f
261 f is a symlink:
256 f is a symlink:
262 f -> dangling
257 f -> dangling
263
258
264 $ hg up -Cqr1
259 $ hg up -Cqr1
265 $ hg merge
260 $ hg merge
266 tool :merge (for pattern f) can't handle symlinks
261 tool internal:merge (for pattern f) can't handle symlinks
267 no tool found to merge f
262 no tool found to merge f
268 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
263 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
269 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
264 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
270 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
265 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
271 [1]
266 [1]
272 $ tellmeabout f
267 $ tellmeabout f
273 f is a plain file with content:
268 f is a plain file with content:
274 f
269 f
275
270
276 Test removed 'x' flag merged with content change - both ways
271 Test removed 'x' flag merged with content change - both ways
277
272
278 $ hg up -Cqr0
273 $ hg up -Cqr0
279 $ echo change > f
274 $ echo change > f
280 $ hg ci -qm3
275 $ hg ci -qm3
281 $ hg merge -r1
276 $ hg merge -r1
282 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
277 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
283 (branch merge, don't forget to commit)
278 (branch merge, don't forget to commit)
284 $ tellmeabout f
279 $ tellmeabout f
285 f is a plain file with content:
280 f is a plain file with content:
286 change
281 change
287
282
288 $ hg up -qCr1
283 $ hg up -qCr1
289 $ hg merge -r3
284 $ hg merge -r3
290 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
285 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
291 (branch merge, don't forget to commit)
286 (branch merge, don't forget to commit)
292 $ tellmeabout f
287 $ tellmeabout f
293 f is a plain file with content:
288 f is a plain file with content:
294 change
289 change
295
290
296 $ cd ..
291 $ cd ..
297
292
298 Test merge with no common ancestor:
293 Test merge with no common ancestor:
299 a: just different
294 a: just different
300 b: x vs -, different (cannot calculate x, cannot ask merge tool)
295 b: x vs -, different (cannot calculate x, cannot ask merge tool)
301 c: x vs -, same (cannot calculate x, merge tool is no good)
296 c: x vs -, same (cannot calculate x, merge tool is no good)
302 d: x vs l, different
297 d: x vs l, different
303 e: x vs l, same
298 e: x vs l, same
304 f: - vs l, different
299 f: - vs l, different
305 g: - vs l, same
300 g: - vs l, same
306 h: l vs l, different
301 h: l vs l, different
307 (where same means the filelog entry is shared and there thus is an ancestor!)
302 (where same means the filelog entry is shared and there thus is an ancestor!)
308
303
309 $ hg init test4
304 $ hg init test4
310 $ cd test4
305 $ cd test4
311 $ echo 0 > 0
306 $ echo 0 > 0
312 $ hg ci -Aqm0
307 $ hg ci -Aqm0
313
308
314 $ echo 1 > a
309 $ echo 1 > a
315 $ echo 1 > b
310 $ echo 1 > b
316 $ chmod +x b
311 $ chmod +x b
317 $ echo 1 > bx
312 $ echo 1 > bx
318 $ chmod +x bx
313 $ chmod +x bx
319 $ echo x > c
314 $ echo x > c
320 $ chmod +x c
315 $ chmod +x c
321 $ echo 1 > d
316 $ echo 1 > d
322 $ chmod +x d
317 $ chmod +x d
323 $ printf x > e
318 $ printf x > e
324 $ chmod +x e
319 $ chmod +x e
325 $ echo 1 > f
320 $ echo 1 > f
326 $ printf x > g
321 $ printf x > g
327 $ ln -s 1 h
322 $ ln -s 1 h
328 $ hg ci -qAm1
323 $ hg ci -qAm1
329
324
330 $ hg up -qr0
325 $ hg up -qr0
331 $ echo 2 > a
326 $ echo 2 > a
332 $ echo 2 > b
327 $ echo 2 > b
333 $ echo 2 > bx
328 $ echo 2 > bx
334 $ chmod +x bx
329 $ chmod +x bx
335 $ echo x > c
330 $ echo x > c
336 $ ln -s 2 d
331 $ ln -s 2 d
337 $ ln -s x e
332 $ ln -s x e
338 $ ln -s 2 f
333 $ ln -s 2 f
339 $ ln -s x g
334 $ ln -s x g
340 $ ln -s 2 h
335 $ ln -s 2 h
341 $ hg ci -Aqm2
336 $ hg ci -Aqm2
342
337
343 $ hg merge
338 $ hg merge
344 merging a
339 merging a
345 warning: cannot merge flags for b without common ancestor - keeping local flags
340 warning: cannot merge flags for b without common ancestor - keeping local flags
346 merging b
341 merging b
347 merging bx
342 merging bx
348 warning: cannot merge flags for c without common ancestor - keeping local flags
343 warning: cannot merge flags for c without common ancestor - keeping local flags
349 tool :merge (for pattern d) can't handle symlinks
344 tool internal:merge (for pattern d) can't handle symlinks
350 no tool found to merge d
345 no tool found to merge d
351 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for d? u
346 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for d? u
352 tool :merge (for pattern f) can't handle symlinks
347 tool internal:merge (for pattern f) can't handle symlinks
353 no tool found to merge f
348 no tool found to merge f
354 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
349 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
355 tool :merge (for pattern h) can't handle symlinks
350 tool internal:merge (for pattern h) can't handle symlinks
356 no tool found to merge h
351 no tool found to merge h
357 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for h? u
352 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for h? u
358 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
353 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
359 warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
354 warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
360 warning: conflicts while merging bx! (edit, then use 'hg resolve --mark')
355 warning: conflicts while merging bx! (edit, then use 'hg resolve --mark')
361 3 files updated, 0 files merged, 0 files removed, 6 files unresolved
356 3 files updated, 0 files merged, 0 files removed, 6 files unresolved
362 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
357 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
363 [1]
358 [1]
364 $ hg resolve -l
359 $ hg resolve -l
365 U a
360 U a
366 U b
361 U b
367 U bx
362 U bx
368 U d
363 U d
369 U f
364 U f
370 U h
365 U h
371 $ tellmeabout a
366 $ tellmeabout a
372 a is a plain file with content:
367 a is a plain file with content:
373 <<<<<<< working copy: 0c617753b41b - test: 2
368 <<<<<<< working copy: 0c617753b41b - test: 2
374 2
369 2
375 =======
370 =======
376 1
371 1
377 >>>>>>> merge rev: 2e60aa20b912 - test: 1
372 >>>>>>> merge rev: 2e60aa20b912 - test: 1
378 $ tellmeabout b
373 $ tellmeabout b
379 b is a plain file with content:
374 b is a plain file with content:
380 <<<<<<< working copy: 0c617753b41b - test: 2
375 <<<<<<< working copy: 0c617753b41b - test: 2
381 2
376 2
382 =======
377 =======
383 1
378 1
384 >>>>>>> merge rev: 2e60aa20b912 - test: 1
379 >>>>>>> merge rev: 2e60aa20b912 - test: 1
385 $ tellmeabout c
380 $ tellmeabout c
386 c is a plain file with content:
381 c is a plain file with content:
387 x
382 x
388 $ tellmeabout d
383 $ tellmeabout d
389 d is a symlink:
384 d is a symlink:
390 d -> 2
385 d -> 2
391 $ tellmeabout e
386 $ tellmeabout e
392 e is a symlink:
387 e is a symlink:
393 e -> x
388 e -> x
394 $ tellmeabout f
389 $ tellmeabout f
395 f is a symlink:
390 f is a symlink:
396 f -> 2
391 f -> 2
397 $ tellmeabout g
392 $ tellmeabout g
398 g is a symlink:
393 g is a symlink:
399 g -> x
394 g -> x
400 $ tellmeabout h
395 $ tellmeabout h
401 h is a symlink:
396 h is a symlink:
402 h -> 2
397 h -> 2
403
398
404 $ hg up -Cqr1
399 $ hg up -Cqr1
405 $ hg merge
400 $ hg merge
406 merging a
401 merging a
407 warning: cannot merge flags for b without common ancestor - keeping local flags
402 warning: cannot merge flags for b without common ancestor - keeping local flags
408 merging b
403 merging b
409 merging bx
404 merging bx
410 warning: cannot merge flags for c without common ancestor - keeping local flags
405 warning: cannot merge flags for c without common ancestor - keeping local flags
411 tool :merge (for pattern d) can't handle symlinks
406 tool internal:merge (for pattern d) can't handle symlinks
412 no tool found to merge d
407 no tool found to merge d
413 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for d? u
408 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for d? u
414 tool :merge (for pattern f) can't handle symlinks
409 tool internal:merge (for pattern f) can't handle symlinks
415 no tool found to merge f
410 no tool found to merge f
416 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
411 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u
417 tool :merge (for pattern h) can't handle symlinks
412 tool internal:merge (for pattern h) can't handle symlinks
418 no tool found to merge h
413 no tool found to merge h
419 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for h? u
414 keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for h? u
420 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
415 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
421 warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
416 warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
422 warning: conflicts while merging bx! (edit, then use 'hg resolve --mark')
417 warning: conflicts while merging bx! (edit, then use 'hg resolve --mark')
423 3 files updated, 0 files merged, 0 files removed, 6 files unresolved
418 3 files updated, 0 files merged, 0 files removed, 6 files unresolved
424 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
419 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
425 [1]
420 [1]
426 $ tellmeabout a
421 $ tellmeabout a
427 a is a plain file with content:
422 a is a plain file with content:
428 <<<<<<< working copy: 2e60aa20b912 - test: 1
423 <<<<<<< working copy: 2e60aa20b912 - test: 1
429 1
424 1
430 =======
425 =======
431 2
426 2
432 >>>>>>> merge rev: 0c617753b41b - test: 2
427 >>>>>>> merge rev: 0c617753b41b - test: 2
433 $ tellmeabout b
428 $ tellmeabout b
434 b is an executable file with content:
429 b is an executable file with content:
435 <<<<<<< working copy: 2e60aa20b912 - test: 1
430 <<<<<<< working copy: 2e60aa20b912 - test: 1
436 1
431 1
437 =======
432 =======
438 2
433 2
439 >>>>>>> merge rev: 0c617753b41b - test: 2
434 >>>>>>> merge rev: 0c617753b41b - test: 2
440 $ tellmeabout c
435 $ tellmeabout c
441 c is an executable file with content:
436 c is an executable file with content:
442 x
437 x
443 $ tellmeabout d
438 $ tellmeabout d
444 d is an executable file with content:
439 d is an executable file with content:
445 1
440 1
446 $ tellmeabout e
441 $ tellmeabout e
447 e is an executable file with content:
442 e is an executable file with content:
448 x (no-eol)
443 x (no-eol)
449 $ tellmeabout f
444 $ tellmeabout f
450 f is a plain file with content:
445 f is a plain file with content:
451 1
446 1
452 $ tellmeabout g
447 $ tellmeabout g
453 g is a plain file with content:
448 g is a plain file with content:
454 x (no-eol)
449 x (no-eol)
455 $ tellmeabout h
450 $ tellmeabout h
456 h is a symlink:
451 h is a symlink:
457 h -> 1
452 h -> 1
458
453
459 $ cd ..
454 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now