##// END OF EJS Templates
tests: fix windows test failure with largefiles
Mads Kiilerich -
r18557:945ba91c default
parent child Browse files
Show More
@@ -1,2089 +1,2089
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 > purge=
6 > purge=
7 > rebase=
7 > rebase=
8 > transplant=
8 > transplant=
9 > [phases]
9 > [phases]
10 > publish=False
10 > publish=False
11 > [largefiles]
11 > [largefiles]
12 > minsize=2
12 > minsize=2
13 > patterns=glob:**.dat
13 > patterns=glob:**.dat
14 > usercache=${USERCACHE}
14 > usercache=${USERCACHE}
15 > [hooks]
15 > [hooks]
16 > precommit=sh -c "echo \\"Invoking status precommit hook\\"; hg status"
16 > precommit=sh -c "echo \\"Invoking status precommit hook\\"; hg status"
17 > EOF
17 > EOF
18
18
19 Create the repo with a couple of revisions of both large and normal
19 Create the repo with a couple of revisions of both large and normal
20 files.
20 files.
21 Test status and dirstate of largefiles and that summary output is correct.
21 Test status and dirstate of largefiles and that summary output is correct.
22
22
23 $ hg init a
23 $ hg init a
24 $ cd a
24 $ cd a
25 $ mkdir sub
25 $ mkdir sub
26 $ echo normal1 > normal1
26 $ echo normal1 > normal1
27 $ echo normal2 > sub/normal2
27 $ echo normal2 > sub/normal2
28 $ echo large1 > large1
28 $ echo large1 > large1
29 $ echo large2 > sub/large2
29 $ echo large2 > sub/large2
30 $ hg add normal1 sub/normal2
30 $ hg add normal1 sub/normal2
31 $ hg add --large large1 sub/large2
31 $ hg add --large large1 sub/large2
32 $ hg commit -m "add files"
32 $ hg commit -m "add files"
33 Invoking status precommit hook
33 Invoking status precommit hook
34 A large1
34 A large1
35 A normal1
35 A normal1
36 A sub/large2
36 A sub/large2
37 A sub/normal2
37 A sub/normal2
38 $ touch large1 sub/large2
38 $ touch large1 sub/large2
39 $ sleep 1
39 $ sleep 1
40 $ hg st
40 $ hg st
41 $ hg debugstate --nodates
41 $ hg debugstate --nodates
42 n 644 41 .hglf/large1
42 n 644 41 .hglf/large1
43 n 644 41 .hglf/sub/large2
43 n 644 41 .hglf/sub/large2
44 n 644 8 normal1
44 n 644 8 normal1
45 n 644 8 sub/normal2
45 n 644 8 sub/normal2
46 $ hg debugstate --large
46 $ hg debugstate --large
47 n 644 7 large1
47 n 644 7 large1
48 n 644 7 sub/large2
48 n 644 7 sub/large2
49 $ echo normal11 > normal1
49 $ echo normal11 > normal1
50 $ echo normal22 > sub/normal2
50 $ echo normal22 > sub/normal2
51 $ echo large11 > large1
51 $ echo large11 > large1
52 $ echo large22 > sub/large2
52 $ echo large22 > sub/large2
53 $ hg commit -m "edit files"
53 $ hg commit -m "edit files"
54 Invoking status precommit hook
54 Invoking status precommit hook
55 M large1
55 M large1
56 M normal1
56 M normal1
57 M sub/large2
57 M sub/large2
58 M sub/normal2
58 M sub/normal2
59 $ hg sum --large
59 $ hg sum --large
60 parent: 1:ce8896473775 tip
60 parent: 1:ce8896473775 tip
61 edit files
61 edit files
62 branch: default
62 branch: default
63 commit: (clean)
63 commit: (clean)
64 update: (current)
64 update: (current)
65 largefiles: (no remote repo)
65 largefiles: (no remote repo)
66
66
67 Commit preserved largefile contents.
67 Commit preserved largefile contents.
68
68
69 $ cat normal1
69 $ cat normal1
70 normal11
70 normal11
71 $ cat large1
71 $ cat large1
72 large11
72 large11
73 $ cat sub/normal2
73 $ cat sub/normal2
74 normal22
74 normal22
75 $ cat sub/large2
75 $ cat sub/large2
76 large22
76 large22
77
77
78 Test status, subdir and unknown files
78 Test status, subdir and unknown files
79
79
80 $ echo unknown > sub/unknown
80 $ echo unknown > sub/unknown
81 $ hg st --all
81 $ hg st --all
82 ? sub/unknown
82 ? sub/unknown
83 C large1
83 C large1
84 C normal1
84 C normal1
85 C sub/large2
85 C sub/large2
86 C sub/normal2
86 C sub/normal2
87 $ hg st --all sub
87 $ hg st --all sub
88 ? sub/unknown
88 ? sub/unknown
89 C sub/large2
89 C sub/large2
90 C sub/normal2
90 C sub/normal2
91 $ rm sub/unknown
91 $ rm sub/unknown
92
92
93 Test messages and exit codes for remove warning cases
93 Test messages and exit codes for remove warning cases
94
94
95 $ hg remove -A large1
95 $ hg remove -A large1
96 not removing large1: file still exists
96 not removing large1: file still exists
97 [1]
97 [1]
98 $ echo 'modified' > large1
98 $ echo 'modified' > large1
99 $ hg remove large1
99 $ hg remove large1
100 not removing large1: file is modified (use -f to force removal)
100 not removing large1: file is modified (use -f to force removal)
101 [1]
101 [1]
102 $ echo 'new' > normalnew
102 $ echo 'new' > normalnew
103 $ hg add normalnew
103 $ hg add normalnew
104 $ echo 'new' > largenew
104 $ echo 'new' > largenew
105 $ hg add --large normalnew
105 $ hg add --large normalnew
106 normalnew already tracked!
106 normalnew already tracked!
107 $ hg remove normalnew largenew
107 $ hg remove normalnew largenew
108 not removing largenew: file is untracked
108 not removing largenew: file is untracked
109 not removing normalnew: file has been marked for add (use forget to undo)
109 not removing normalnew: file has been marked for add (use forget to undo)
110 [1]
110 [1]
111 $ rm normalnew largenew
111 $ rm normalnew largenew
112 $ hg up -Cq
112 $ hg up -Cq
113
113
114 Remove both largefiles and normal files.
114 Remove both largefiles and normal files.
115
115
116 $ hg remove normal1 large1
116 $ hg remove normal1 large1
117 $ hg status large1
117 $ hg status large1
118 R large1
118 R large1
119 $ hg commit -m "remove files"
119 $ hg commit -m "remove files"
120 Invoking status precommit hook
120 Invoking status precommit hook
121 R large1
121 R large1
122 R normal1
122 R normal1
123 $ ls
123 $ ls
124 sub
124 sub
125 $ echo "testlargefile" > large1-test
125 $ echo "testlargefile" > large1-test
126 $ hg add --large large1-test
126 $ hg add --large large1-test
127 $ hg st
127 $ hg st
128 A large1-test
128 A large1-test
129 $ hg rm large1-test
129 $ hg rm large1-test
130 not removing large1-test: file has been marked for add (use forget to undo)
130 not removing large1-test: file has been marked for add (use forget to undo)
131 [1]
131 [1]
132 $ hg st
132 $ hg st
133 A large1-test
133 A large1-test
134 $ hg forget large1-test
134 $ hg forget large1-test
135 $ hg st
135 $ hg st
136 ? large1-test
136 ? large1-test
137 $ hg remove large1-test
137 $ hg remove large1-test
138 not removing large1-test: file is untracked
138 not removing large1-test: file is untracked
139 [1]
139 [1]
140 $ hg forget large1-test
140 $ hg forget large1-test
141 not removing large1-test: file is already untracked
141 not removing large1-test: file is already untracked
142 [1]
142 [1]
143 $ rm large1-test
143 $ rm large1-test
144
144
145 Copy both largefiles and normal files (testing that status output is correct).
145 Copy both largefiles and normal files (testing that status output is correct).
146
146
147 $ hg cp sub/normal2 normal1
147 $ hg cp sub/normal2 normal1
148 $ hg cp sub/large2 large1
148 $ hg cp sub/large2 large1
149 $ hg commit -m "copy files"
149 $ hg commit -m "copy files"
150 Invoking status precommit hook
150 Invoking status precommit hook
151 A large1
151 A large1
152 A normal1
152 A normal1
153 $ cat normal1
153 $ cat normal1
154 normal22
154 normal22
155 $ cat large1
155 $ cat large1
156 large22
156 large22
157
157
158 Test moving largefiles and verify that normal files are also unaffected.
158 Test moving largefiles and verify that normal files are also unaffected.
159
159
160 $ hg mv normal1 normal3
160 $ hg mv normal1 normal3
161 $ hg mv large1 large3
161 $ hg mv large1 large3
162 $ hg mv sub/normal2 sub/normal4
162 $ hg mv sub/normal2 sub/normal4
163 $ hg mv sub/large2 sub/large4
163 $ hg mv sub/large2 sub/large4
164 $ hg commit -m "move files"
164 $ hg commit -m "move files"
165 Invoking status precommit hook
165 Invoking status precommit hook
166 A large3
166 A large3
167 A normal3
167 A normal3
168 A sub/large4
168 A sub/large4
169 A sub/normal4
169 A sub/normal4
170 R large1
170 R large1
171 R normal1
171 R normal1
172 R sub/large2
172 R sub/large2
173 R sub/normal2
173 R sub/normal2
174 $ cat normal3
174 $ cat normal3
175 normal22
175 normal22
176 $ cat large3
176 $ cat large3
177 large22
177 large22
178 $ cat sub/normal4
178 $ cat sub/normal4
179 normal22
179 normal22
180 $ cat sub/large4
180 $ cat sub/large4
181 large22
181 large22
182
182
183 Test copies and moves from a directory other than root (issue3516)
183 Test copies and moves from a directory other than root (issue3516)
184
184
185 $ cd ..
185 $ cd ..
186 $ hg init lf_cpmv
186 $ hg init lf_cpmv
187 $ cd lf_cpmv
187 $ cd lf_cpmv
188 $ mkdir dira
188 $ mkdir dira
189 $ mkdir dira/dirb
189 $ mkdir dira/dirb
190 $ touch dira/dirb/largefile
190 $ touch dira/dirb/largefile
191 $ hg add --large dira/dirb/largefile
191 $ hg add --large dira/dirb/largefile
192 $ hg commit -m "added"
192 $ hg commit -m "added"
193 Invoking status precommit hook
193 Invoking status precommit hook
194 A dira/dirb/largefile
194 A dira/dirb/largefile
195 $ cd dira
195 $ cd dira
196 $ hg cp dirb/largefile foo/largefile
196 $ hg cp dirb/largefile foo/largefile
197 $ hg ci -m "deep copy"
197 $ hg ci -m "deep copy"
198 Invoking status precommit hook
198 Invoking status precommit hook
199 A dira/foo/largefile
199 A dira/foo/largefile
200 $ find . | sort
200 $ find . | sort
201 .
201 .
202 ./dirb
202 ./dirb
203 ./dirb/largefile
203 ./dirb/largefile
204 ./foo
204 ./foo
205 ./foo/largefile
205 ./foo/largefile
206 $ hg mv foo/largefile baz/largefile
206 $ hg mv foo/largefile baz/largefile
207 $ hg ci -m "moved"
207 $ hg ci -m "moved"
208 Invoking status precommit hook
208 Invoking status precommit hook
209 A dira/baz/largefile
209 A dira/baz/largefile
210 R dira/foo/largefile
210 R dira/foo/largefile
211 $ find . | sort
211 $ find . | sort
212 .
212 .
213 ./baz
213 ./baz
214 ./baz/largefile
214 ./baz/largefile
215 ./dirb
215 ./dirb
216 ./dirb/largefile
216 ./dirb/largefile
217 ./foo
217 ./foo
218 $ cd ../../a
218 $ cd ../../a
219
219
220 #if serve
220 #if serve
221 Test display of largefiles in hgweb
221 Test display of largefiles in hgweb
222
222
223 $ hg serve -d -p $HGPORT --pid-file ../hg.pid
223 $ hg serve -d -p $HGPORT --pid-file ../hg.pid
224 $ cat ../hg.pid >> $DAEMON_PIDS
224 $ cat ../hg.pid >> $DAEMON_PIDS
225 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
225 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
226 200 Script output follows
226 200 Script output follows
227
227
228
228
229 drwxr-xr-x sub
229 drwxr-xr-x sub
230 -rw-r--r-- 41 large3
230 -rw-r--r-- 41 large3
231 -rw-r--r-- 9 normal3
231 -rw-r--r-- 9 normal3
232
232
233
233
234 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
234 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
235 200 Script output follows
235 200 Script output follows
236
236
237
237
238 -rw-r--r-- 41 large4
238 -rw-r--r-- 41 large4
239 -rw-r--r-- 9 normal4
239 -rw-r--r-- 9 normal4
240
240
241
241
242 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
242 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
243 #endif
243 #endif
244
244
245 Test archiving the various revisions. These hit corner cases known with
245 Test archiving the various revisions. These hit corner cases known with
246 archiving.
246 archiving.
247
247
248 $ hg archive -r 0 ../archive0
248 $ hg archive -r 0 ../archive0
249 $ hg archive -r 1 ../archive1
249 $ hg archive -r 1 ../archive1
250 $ hg archive -r 2 ../archive2
250 $ hg archive -r 2 ../archive2
251 $ hg archive -r 3 ../archive3
251 $ hg archive -r 3 ../archive3
252 $ hg archive -r 4 ../archive4
252 $ hg archive -r 4 ../archive4
253 $ cd ../archive0
253 $ cd ../archive0
254 $ cat normal1
254 $ cat normal1
255 normal1
255 normal1
256 $ cat large1
256 $ cat large1
257 large1
257 large1
258 $ cat sub/normal2
258 $ cat sub/normal2
259 normal2
259 normal2
260 $ cat sub/large2
260 $ cat sub/large2
261 large2
261 large2
262 $ cd ../archive1
262 $ cd ../archive1
263 $ cat normal1
263 $ cat normal1
264 normal11
264 normal11
265 $ cat large1
265 $ cat large1
266 large11
266 large11
267 $ cat sub/normal2
267 $ cat sub/normal2
268 normal22
268 normal22
269 $ cat sub/large2
269 $ cat sub/large2
270 large22
270 large22
271 $ cd ../archive2
271 $ cd ../archive2
272 $ ls
272 $ ls
273 sub
273 sub
274 $ cat sub/normal2
274 $ cat sub/normal2
275 normal22
275 normal22
276 $ cat sub/large2
276 $ cat sub/large2
277 large22
277 large22
278 $ cd ../archive3
278 $ cd ../archive3
279 $ cat normal1
279 $ cat normal1
280 normal22
280 normal22
281 $ cat large1
281 $ cat large1
282 large22
282 large22
283 $ cat sub/normal2
283 $ cat sub/normal2
284 normal22
284 normal22
285 $ cat sub/large2
285 $ cat sub/large2
286 large22
286 large22
287 $ cd ../archive4
287 $ cd ../archive4
288 $ cat normal3
288 $ cat normal3
289 normal22
289 normal22
290 $ cat large3
290 $ cat large3
291 large22
291 large22
292 $ cat sub/normal4
292 $ cat sub/normal4
293 normal22
293 normal22
294 $ cat sub/large4
294 $ cat sub/large4
295 large22
295 large22
296
296
297 Commit corner case: specify files to commit.
297 Commit corner case: specify files to commit.
298
298
299 $ cd ../a
299 $ cd ../a
300 $ echo normal3 > normal3
300 $ echo normal3 > normal3
301 $ echo large3 > large3
301 $ echo large3 > large3
302 $ echo normal4 > sub/normal4
302 $ echo normal4 > sub/normal4
303 $ echo large4 > sub/large4
303 $ echo large4 > sub/large4
304 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
304 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
305 Invoking status precommit hook
305 Invoking status precommit hook
306 M large3
306 M large3
307 M normal3
307 M normal3
308 M sub/large4
308 M sub/large4
309 M sub/normal4
309 M sub/normal4
310 $ cat normal3
310 $ cat normal3
311 normal3
311 normal3
312 $ cat large3
312 $ cat large3
313 large3
313 large3
314 $ cat sub/normal4
314 $ cat sub/normal4
315 normal4
315 normal4
316 $ cat sub/large4
316 $ cat sub/large4
317 large4
317 large4
318
318
319 One more commit corner case: commit from a subdirectory.
319 One more commit corner case: commit from a subdirectory.
320
320
321 $ cd ../a
321 $ cd ../a
322 $ echo normal33 > normal3
322 $ echo normal33 > normal3
323 $ echo large33 > large3
323 $ echo large33 > large3
324 $ echo normal44 > sub/normal4
324 $ echo normal44 > sub/normal4
325 $ echo large44 > sub/large4
325 $ echo large44 > sub/large4
326 $ cd sub
326 $ cd sub
327 $ hg commit -m "edit files yet again"
327 $ hg commit -m "edit files yet again"
328 Invoking status precommit hook
328 Invoking status precommit hook
329 M large3
329 M large3
330 M normal3
330 M normal3
331 M sub/large4
331 M sub/large4
332 M sub/normal4
332 M sub/normal4
333 $ cat ../normal3
333 $ cat ../normal3
334 normal33
334 normal33
335 $ cat ../large3
335 $ cat ../large3
336 large33
336 large33
337 $ cat normal4
337 $ cat normal4
338 normal44
338 normal44
339 $ cat large4
339 $ cat large4
340 large44
340 large44
341
341
342 Committing standins is not allowed.
342 Committing standins is not allowed.
343
343
344 $ cd ..
344 $ cd ..
345 $ echo large3 > large3
345 $ echo large3 > large3
346 $ hg commit .hglf/large3 -m "try to commit standin"
346 $ hg commit .hglf/large3 -m "try to commit standin"
347 abort: file ".hglf/large3" is a largefile standin
347 abort: file ".hglf/large3" is a largefile standin
348 (commit the largefile itself instead)
348 (commit the largefile itself instead)
349 [255]
349 [255]
350
350
351 Corner cases for adding largefiles.
351 Corner cases for adding largefiles.
352
352
353 $ echo large5 > large5
353 $ echo large5 > large5
354 $ hg add --large large5
354 $ hg add --large large5
355 $ hg add --large large5
355 $ hg add --large large5
356 large5 already a largefile
356 large5 already a largefile
357 $ mkdir sub2
357 $ mkdir sub2
358 $ echo large6 > sub2/large6
358 $ echo large6 > sub2/large6
359 $ echo large7 > sub2/large7
359 $ echo large7 > sub2/large7
360 $ hg add --large sub2
360 $ hg add --large sub2
361 adding sub2/large6 as a largefile (glob)
361 adding sub2/large6 as a largefile (glob)
362 adding sub2/large7 as a largefile (glob)
362 adding sub2/large7 as a largefile (glob)
363 $ hg st
363 $ hg st
364 M large3
364 M large3
365 A large5
365 A large5
366 A sub2/large6
366 A sub2/large6
367 A sub2/large7
367 A sub2/large7
368
368
369 Committing directories containing only largefiles.
369 Committing directories containing only largefiles.
370
370
371 $ mkdir -p z/y/x/m
371 $ mkdir -p z/y/x/m
372 $ touch z/y/x/m/large1
372 $ touch z/y/x/m/large1
373 $ touch z/y/x/large2
373 $ touch z/y/x/large2
374 $ hg add --large z/y/x/m/large1 z/y/x/large2
374 $ hg add --large z/y/x/m/large1 z/y/x/large2
375 $ hg commit -m "Subdir with directory only containing largefiles" z
375 $ hg commit -m "Subdir with directory only containing largefiles" z
376 Invoking status precommit hook
376 Invoking status precommit hook
377 M large3
377 M large3
378 A large5
378 A large5
379 A sub2/large6
379 A sub2/large6
380 A sub2/large7
380 A sub2/large7
381 A z/y/x/large2
381 A z/y/x/large2
382 A z/y/x/m/large1
382 A z/y/x/m/large1
383 $ hg rollback --quiet
383 $ hg rollback --quiet
384 $ touch z/y/x/m/normal
384 $ touch z/y/x/m/normal
385 $ hg add z/y/x/m/normal
385 $ hg add z/y/x/m/normal
386 $ hg commit -m "Subdir with mixed contents" z
386 $ hg commit -m "Subdir with mixed contents" z
387 Invoking status precommit hook
387 Invoking status precommit hook
388 M large3
388 M large3
389 A large5
389 A large5
390 A sub2/large6
390 A sub2/large6
391 A sub2/large7
391 A sub2/large7
392 A z/y/x/large2
392 A z/y/x/large2
393 A z/y/x/m/large1
393 A z/y/x/m/large1
394 A z/y/x/m/normal
394 A z/y/x/m/normal
395 $ hg st
395 $ hg st
396 M large3
396 M large3
397 A large5
397 A large5
398 A sub2/large6
398 A sub2/large6
399 A sub2/large7
399 A sub2/large7
400 $ hg rollback --quiet
400 $ hg rollback --quiet
401 $ hg revert z/y/x/large2 z/y/x/m/large1
401 $ hg revert z/y/x/large2 z/y/x/m/large1
402 $ rm z/y/x/large2 z/y/x/m/large1
402 $ rm z/y/x/large2 z/y/x/m/large1
403 $ hg commit -m "Subdir with normal contents" z
403 $ hg commit -m "Subdir with normal contents" z
404 Invoking status precommit hook
404 Invoking status precommit hook
405 M large3
405 M large3
406 A large5
406 A large5
407 A sub2/large6
407 A sub2/large6
408 A sub2/large7
408 A sub2/large7
409 A z/y/x/m/normal
409 A z/y/x/m/normal
410 $ hg st
410 $ hg st
411 M large3
411 M large3
412 A large5
412 A large5
413 A sub2/large6
413 A sub2/large6
414 A sub2/large7
414 A sub2/large7
415 $ hg rollback --quiet
415 $ hg rollback --quiet
416 $ hg revert --quiet z
416 $ hg revert --quiet z
417 $ hg commit -m "Empty subdir" z
417 $ hg commit -m "Empty subdir" z
418 abort: z: no match under directory!
418 abort: z: no match under directory!
419 [255]
419 [255]
420 $ rm -rf z
420 $ rm -rf z
421 $ hg ci -m "standin" .hglf
421 $ hg ci -m "standin" .hglf
422 abort: file ".hglf" is a largefile standin
422 abort: file ".hglf" is a largefile standin
423 (commit the largefile itself instead)
423 (commit the largefile itself instead)
424 [255]
424 [255]
425
425
426 Test "hg status" with combination of 'file pattern' and 'directory
426 Test "hg status" with combination of 'file pattern' and 'directory
427 pattern' for largefiles:
427 pattern' for largefiles:
428
428
429 $ hg status sub2/large6 sub2
429 $ hg status sub2/large6 sub2
430 A sub2/large6
430 A sub2/large6
431 A sub2/large7
431 A sub2/large7
432
432
433 Config settings (pattern **.dat, minsize 2 MB) are respected.
433 Config settings (pattern **.dat, minsize 2 MB) are respected.
434
434
435 $ echo testdata > test.dat
435 $ echo testdata > test.dat
436 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
436 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
437 $ hg add
437 $ hg add
438 adding reallylarge as a largefile
438 adding reallylarge as a largefile
439 adding test.dat as a largefile
439 adding test.dat as a largefile
440
440
441 Test that minsize and --lfsize handle float values;
441 Test that minsize and --lfsize handle float values;
442 also tests that --lfsize overrides largefiles.minsize.
442 also tests that --lfsize overrides largefiles.minsize.
443 (0.250 MB = 256 kB = 262144 B)
443 (0.250 MB = 256 kB = 262144 B)
444
444
445 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
445 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
446 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
446 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
447 $ hg --config largefiles.minsize=.25 add
447 $ hg --config largefiles.minsize=.25 add
448 adding ratherlarge as a largefile
448 adding ratherlarge as a largefile
449 adding medium
449 adding medium
450 $ hg forget medium
450 $ hg forget medium
451 $ hg --config largefiles.minsize=.25 add --lfsize=.125
451 $ hg --config largefiles.minsize=.25 add --lfsize=.125
452 adding medium as a largefile
452 adding medium as a largefile
453 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
453 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
454 $ hg --config largefiles.minsize=.25 add --lfsize=.125
454 $ hg --config largefiles.minsize=.25 add --lfsize=.125
455 adding notlarge
455 adding notlarge
456 $ hg forget notlarge
456 $ hg forget notlarge
457
457
458 Test forget on largefiles.
458 Test forget on largefiles.
459
459
460 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
460 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
461 $ hg commit -m "add/edit more largefiles"
461 $ hg commit -m "add/edit more largefiles"
462 Invoking status precommit hook
462 Invoking status precommit hook
463 A sub2/large6
463 A sub2/large6
464 A sub2/large7
464 A sub2/large7
465 R large3
465 R large3
466 ? large5
466 ? large5
467 ? medium
467 ? medium
468 ? notlarge
468 ? notlarge
469 ? ratherlarge
469 ? ratherlarge
470 ? reallylarge
470 ? reallylarge
471 ? test.dat
471 ? test.dat
472 $ hg st
472 $ hg st
473 ? large3
473 ? large3
474 ? large5
474 ? large5
475 ? medium
475 ? medium
476 ? notlarge
476 ? notlarge
477 ? ratherlarge
477 ? ratherlarge
478 ? reallylarge
478 ? reallylarge
479 ? test.dat
479 ? test.dat
480
480
481 Purge with largefiles: verify that largefiles are still in the working
481 Purge with largefiles: verify that largefiles are still in the working
482 dir after a purge.
482 dir after a purge.
483
483
484 $ hg purge --all
484 $ hg purge --all
485 $ cat sub/large4
485 $ cat sub/large4
486 large44
486 large44
487 $ cat sub2/large6
487 $ cat sub2/large6
488 large6
488 large6
489 $ cat sub2/large7
489 $ cat sub2/large7
490 large7
490 large7
491
491
492 Test addremove: verify that files that should be added as largfiles are added as
492 Test addremove: verify that files that should be added as largfiles are added as
493 such and that already-existing largfiles are not added as normal files by
493 such and that already-existing largfiles are not added as normal files by
494 accident.
494 accident.
495
495
496 $ rm normal3
496 $ rm normal3
497 $ rm sub/large4
497 $ rm sub/large4
498 $ echo "testing addremove with patterns" > testaddremove.dat
498 $ echo "testing addremove with patterns" > testaddremove.dat
499 $ echo "normaladdremove" > normaladdremove
499 $ echo "normaladdremove" > normaladdremove
500 $ hg addremove
500 $ hg addremove
501 removing sub/large4
501 removing sub/large4
502 adding testaddremove.dat as a largefile
502 adding testaddremove.dat as a largefile
503 removing normal3
503 removing normal3
504 adding normaladdremove
504 adding normaladdremove
505
505
506 Test addremove with -R
506 Test addremove with -R
507
507
508 $ hg up -C
508 $ hg up -C
509 getting changed largefiles
509 getting changed largefiles
510 1 largefiles updated, 0 removed
510 1 largefiles updated, 0 removed
511 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
511 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
512 $ rm normal3
512 $ rm normal3
513 $ rm sub/large4
513 $ rm sub/large4
514 $ echo "testing addremove with patterns" > testaddremove.dat
514 $ echo "testing addremove with patterns" > testaddremove.dat
515 $ echo "normaladdremove" > normaladdremove
515 $ echo "normaladdremove" > normaladdremove
516 $ cd ..
516 $ cd ..
517 $ hg -R a addremove
517 $ hg -R a addremove
518 removing sub/large4
518 removing sub/large4
519 adding a/testaddremove.dat as a largefile (glob)
519 adding a/testaddremove.dat as a largefile (glob)
520 removing normal3
520 removing normal3
521 adding normaladdremove
521 adding normaladdremove
522 $ cd a
522 $ cd a
523
523
524 Test 3364
524 Test 3364
525 $ hg clone . ../addrm
525 $ hg clone . ../addrm
526 updating to branch default
526 updating to branch default
527 getting changed largefiles
527 getting changed largefiles
528 3 largefiles updated, 0 removed
528 3 largefiles updated, 0 removed
529 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
529 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
530 $ cd ../addrm
530 $ cd ../addrm
531 $ cat >> .hg/hgrc <<EOF
531 $ cat >> .hg/hgrc <<EOF
532 > [hooks]
532 > [hooks]
533 > post-commit.stat=sh -c "echo \\"Invoking status postcommit hook\\"; hg status -A"
533 > post-commit.stat=sh -c "echo \\"Invoking status postcommit hook\\"; hg status -A"
534 > EOF
534 > EOF
535 $ touch foo
535 $ touch foo
536 $ hg add --large foo
536 $ hg add --large foo
537 $ hg ci -m "add foo"
537 $ hg ci -m "add foo"
538 Invoking status precommit hook
538 Invoking status precommit hook
539 A foo
539 A foo
540 Invoking status postcommit hook
540 Invoking status postcommit hook
541 C foo
541 C foo
542 C normal3
542 C normal3
543 C sub/large4
543 C sub/large4
544 C sub/normal4
544 C sub/normal4
545 C sub2/large6
545 C sub2/large6
546 C sub2/large7
546 C sub2/large7
547 $ rm foo
547 $ rm foo
548 $ hg st
548 $ hg st
549 ! foo
549 ! foo
550 hmm.. no precommit invoked, but there is a postcommit??
550 hmm.. no precommit invoked, but there is a postcommit??
551 $ hg ci -m "will not checkin"
551 $ hg ci -m "will not checkin"
552 nothing changed
552 nothing changed
553 Invoking status postcommit hook
553 Invoking status postcommit hook
554 ! foo
554 ! foo
555 C normal3
555 C normal3
556 C sub/large4
556 C sub/large4
557 C sub/normal4
557 C sub/normal4
558 C sub2/large6
558 C sub2/large6
559 C sub2/large7
559 C sub2/large7
560 [1]
560 [1]
561 $ hg addremove
561 $ hg addremove
562 removing foo
562 removing foo
563 $ hg st
563 $ hg st
564 R foo
564 R foo
565 $ hg ci -m "used to say nothing changed"
565 $ hg ci -m "used to say nothing changed"
566 Invoking status precommit hook
566 Invoking status precommit hook
567 R foo
567 R foo
568 Invoking status postcommit hook
568 Invoking status postcommit hook
569 C normal3
569 C normal3
570 C sub/large4
570 C sub/large4
571 C sub/normal4
571 C sub/normal4
572 C sub2/large6
572 C sub2/large6
573 C sub2/large7
573 C sub2/large7
574 $ hg st
574 $ hg st
575
575
576 Test 3507 (both normal files and largefiles were a problem)
576 Test 3507 (both normal files and largefiles were a problem)
577
577
578 $ touch normal
578 $ touch normal
579 $ touch large
579 $ touch large
580 $ hg add normal
580 $ hg add normal
581 $ hg add --large large
581 $ hg add --large large
582 $ hg ci -m "added"
582 $ hg ci -m "added"
583 Invoking status precommit hook
583 Invoking status precommit hook
584 A large
584 A large
585 A normal
585 A normal
586 Invoking status postcommit hook
586 Invoking status postcommit hook
587 C large
587 C large
588 C normal
588 C normal
589 C normal3
589 C normal3
590 C sub/large4
590 C sub/large4
591 C sub/normal4
591 C sub/normal4
592 C sub2/large6
592 C sub2/large6
593 C sub2/large7
593 C sub2/large7
594 $ hg remove normal
594 $ hg remove normal
595 $ hg addremove --traceback
595 $ hg addremove --traceback
596 $ hg ci -m "addremoved normal"
596 $ hg ci -m "addremoved normal"
597 Invoking status precommit hook
597 Invoking status precommit hook
598 R normal
598 R normal
599 Invoking status postcommit hook
599 Invoking status postcommit hook
600 C large
600 C large
601 C normal3
601 C normal3
602 C sub/large4
602 C sub/large4
603 C sub/normal4
603 C sub/normal4
604 C sub2/large6
604 C sub2/large6
605 C sub2/large7
605 C sub2/large7
606 $ hg up -C '.^'
606 $ hg up -C '.^'
607 getting changed largefiles
607 getting changed largefiles
608 0 largefiles updated, 0 removed
608 0 largefiles updated, 0 removed
609 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
609 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
610 $ hg remove large
610 $ hg remove large
611 $ hg addremove --traceback
611 $ hg addremove --traceback
612 $ hg ci -m "removed large"
612 $ hg ci -m "removed large"
613 Invoking status precommit hook
613 Invoking status precommit hook
614 R large
614 R large
615 created new head
615 created new head
616 Invoking status postcommit hook
616 Invoking status postcommit hook
617 C normal
617 C normal
618 C normal3
618 C normal3
619 C sub/large4
619 C sub/large4
620 C sub/normal4
620 C sub/normal4
621 C sub2/large6
621 C sub2/large6
622 C sub2/large7
622 C sub2/large7
623
623
624 Test commit -A (issue 3542)
624 Test commit -A (issue 3542)
625 $ echo large8 > large8
625 $ echo large8 > large8
626 $ hg add --large large8
626 $ hg add --large large8
627 $ hg ci -Am 'this used to add large8 as normal and commit both'
627 $ hg ci -Am 'this used to add large8 as normal and commit both'
628 Invoking status precommit hook
628 Invoking status precommit hook
629 A large8
629 A large8
630 Invoking status postcommit hook
630 Invoking status postcommit hook
631 C large8
631 C large8
632 C normal
632 C normal
633 C normal3
633 C normal3
634 C sub/large4
634 C sub/large4
635 C sub/normal4
635 C sub/normal4
636 C sub2/large6
636 C sub2/large6
637 C sub2/large7
637 C sub2/large7
638 $ rm large8
638 $ rm large8
639 $ hg ci -Am 'this used to not notice the rm'
639 $ hg ci -Am 'this used to not notice the rm'
640 removing large8
640 removing large8
641 Invoking status precommit hook
641 Invoking status precommit hook
642 R large8
642 R large8
643 Invoking status postcommit hook
643 Invoking status postcommit hook
644 C normal
644 C normal
645 C normal3
645 C normal3
646 C sub/large4
646 C sub/large4
647 C sub/normal4
647 C sub/normal4
648 C sub2/large6
648 C sub2/large6
649 C sub2/large7
649 C sub2/large7
650
650
651 Test that a standin can't be added as a large file
651 Test that a standin can't be added as a large file
652
652
653 $ touch large
653 $ touch large
654 $ hg add --large large
654 $ hg add --large large
655 $ hg ci -m "add"
655 $ hg ci -m "add"
656 Invoking status precommit hook
656 Invoking status precommit hook
657 A large
657 A large
658 Invoking status postcommit hook
658 Invoking status postcommit hook
659 C large
659 C large
660 C normal
660 C normal
661 C normal3
661 C normal3
662 C sub/large4
662 C sub/large4
663 C sub/normal4
663 C sub/normal4
664 C sub2/large6
664 C sub2/large6
665 C sub2/large7
665 C sub2/large7
666 $ hg remove large
666 $ hg remove large
667 $ touch large
667 $ touch large
668 $ hg addremove --config largefiles.patterns=**large --traceback
668 $ hg addremove --config largefiles.patterns=**large --traceback
669 adding large as a largefile
669 adding large as a largefile
670
670
671 Test that outgoing --large works (with revsets too)
671 Test that outgoing --large works (with revsets too)
672 $ hg outgoing --rev '.^' --large
672 $ hg outgoing --rev '.^' --large
673 comparing with $TESTTMP/a (glob)
673 comparing with $TESTTMP/a (glob)
674 searching for changes
674 searching for changes
675 changeset: 8:c02fd3b77ec4
675 changeset: 8:c02fd3b77ec4
676 user: test
676 user: test
677 date: Thu Jan 01 00:00:00 1970 +0000
677 date: Thu Jan 01 00:00:00 1970 +0000
678 summary: add foo
678 summary: add foo
679
679
680 changeset: 9:289dd08c9bbb
680 changeset: 9:289dd08c9bbb
681 user: test
681 user: test
682 date: Thu Jan 01 00:00:00 1970 +0000
682 date: Thu Jan 01 00:00:00 1970 +0000
683 summary: used to say nothing changed
683 summary: used to say nothing changed
684
684
685 changeset: 10:34f23ac6ac12
685 changeset: 10:34f23ac6ac12
686 user: test
686 user: test
687 date: Thu Jan 01 00:00:00 1970 +0000
687 date: Thu Jan 01 00:00:00 1970 +0000
688 summary: added
688 summary: added
689
689
690 changeset: 12:710c1b2f523c
690 changeset: 12:710c1b2f523c
691 parent: 10:34f23ac6ac12
691 parent: 10:34f23ac6ac12
692 user: test
692 user: test
693 date: Thu Jan 01 00:00:00 1970 +0000
693 date: Thu Jan 01 00:00:00 1970 +0000
694 summary: removed large
694 summary: removed large
695
695
696 changeset: 13:0a3e75774479
696 changeset: 13:0a3e75774479
697 user: test
697 user: test
698 date: Thu Jan 01 00:00:00 1970 +0000
698 date: Thu Jan 01 00:00:00 1970 +0000
699 summary: this used to add large8 as normal and commit both
699 summary: this used to add large8 as normal and commit both
700
700
701 changeset: 14:84f3d378175c
701 changeset: 14:84f3d378175c
702 user: test
702 user: test
703 date: Thu Jan 01 00:00:00 1970 +0000
703 date: Thu Jan 01 00:00:00 1970 +0000
704 summary: this used to not notice the rm
704 summary: this used to not notice the rm
705
705
706 searching for changes
706 searching for changes
707 largefiles to upload:
707 largefiles to upload:
708 foo
708 foo
709 large
709 large
710 large8
710 large8
711
711
712 $ cd ../a
712 $ cd ../a
713
713
714 Clone a largefiles repo.
714 Clone a largefiles repo.
715
715
716 $ hg clone . ../b
716 $ hg clone . ../b
717 updating to branch default
717 updating to branch default
718 getting changed largefiles
718 getting changed largefiles
719 3 largefiles updated, 0 removed
719 3 largefiles updated, 0 removed
720 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
720 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
721 $ cd ../b
721 $ cd ../b
722 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
722 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
723 7:daea875e9014 add/edit more largefiles
723 7:daea875e9014 add/edit more largefiles
724 6:4355d653f84f edit files yet again
724 6:4355d653f84f edit files yet again
725 5:9d5af5072dbd edit files again
725 5:9d5af5072dbd edit files again
726 4:74c02385b94c move files
726 4:74c02385b94c move files
727 3:9e8fbc4bce62 copy files
727 3:9e8fbc4bce62 copy files
728 2:51a0ae4d5864 remove files
728 2:51a0ae4d5864 remove files
729 1:ce8896473775 edit files
729 1:ce8896473775 edit files
730 0:30d30fe6a5be add files
730 0:30d30fe6a5be add files
731 $ cat normal3
731 $ cat normal3
732 normal33
732 normal33
733 $ cat sub/normal4
733 $ cat sub/normal4
734 normal44
734 normal44
735 $ cat sub/large4
735 $ cat sub/large4
736 large44
736 large44
737 $ cat sub2/large6
737 $ cat sub2/large6
738 large6
738 large6
739 $ cat sub2/large7
739 $ cat sub2/large7
740 large7
740 large7
741 $ cd ..
741 $ cd ..
742 $ hg clone a -r 3 c
742 $ hg clone a -r 3 c
743 adding changesets
743 adding changesets
744 adding manifests
744 adding manifests
745 adding file changes
745 adding file changes
746 added 4 changesets with 10 changes to 4 files
746 added 4 changesets with 10 changes to 4 files
747 updating to branch default
747 updating to branch default
748 getting changed largefiles
748 getting changed largefiles
749 2 largefiles updated, 0 removed
749 2 largefiles updated, 0 removed
750 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
750 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
751 $ cd c
751 $ cd c
752 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
752 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
753 3:9e8fbc4bce62 copy files
753 3:9e8fbc4bce62 copy files
754 2:51a0ae4d5864 remove files
754 2:51a0ae4d5864 remove files
755 1:ce8896473775 edit files
755 1:ce8896473775 edit files
756 0:30d30fe6a5be add files
756 0:30d30fe6a5be add files
757 $ cat normal1
757 $ cat normal1
758 normal22
758 normal22
759 $ cat large1
759 $ cat large1
760 large22
760 large22
761 $ cat sub/normal2
761 $ cat sub/normal2
762 normal22
762 normal22
763 $ cat sub/large2
763 $ cat sub/large2
764 large22
764 large22
765
765
766 Old revisions of a clone have correct largefiles content (this also
766 Old revisions of a clone have correct largefiles content (this also
767 tests update).
767 tests update).
768
768
769 $ hg update -r 1
769 $ hg update -r 1
770 getting changed largefiles
770 getting changed largefiles
771 1 largefiles updated, 0 removed
771 1 largefiles updated, 0 removed
772 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
772 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
773 $ cat large1
773 $ cat large1
774 large11
774 large11
775 $ cat sub/large2
775 $ cat sub/large2
776 large22
776 large22
777 $ cd ..
777 $ cd ..
778
778
779 Test cloning with --all-largefiles flag
779 Test cloning with --all-largefiles flag
780
780
781 $ rm "${USERCACHE}"/*
781 $ rm "${USERCACHE}"/*
782 $ hg clone --all-largefiles a a-backup
782 $ hg clone --all-largefiles a a-backup
783 updating to branch default
783 updating to branch default
784 getting changed largefiles
784 getting changed largefiles
785 3 largefiles updated, 0 removed
785 3 largefiles updated, 0 removed
786 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
786 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
787 8 additional largefiles cached
787 8 additional largefiles cached
788
788
789 $ rm "${USERCACHE}"/*
789 $ rm "${USERCACHE}"/*
790 $ hg clone --all-largefiles -u 0 a a-clone0
790 $ hg clone --all-largefiles -u 0 a a-clone0
791 updating to branch default
791 updating to branch default
792 getting changed largefiles
792 getting changed largefiles
793 2 largefiles updated, 0 removed
793 2 largefiles updated, 0 removed
794 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
794 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
795 9 additional largefiles cached
795 9 additional largefiles cached
796 $ hg -R a-clone0 sum
796 $ hg -R a-clone0 sum
797 parent: 0:30d30fe6a5be
797 parent: 0:30d30fe6a5be
798 add files
798 add files
799 branch: default
799 branch: default
800 commit: (clean)
800 commit: (clean)
801 update: 7 new changesets (update)
801 update: 7 new changesets (update)
802
802
803 $ rm "${USERCACHE}"/*
803 $ rm "${USERCACHE}"/*
804 $ hg clone --all-largefiles -u 1 a a-clone1
804 $ hg clone --all-largefiles -u 1 a a-clone1
805 updating to branch default
805 updating to branch default
806 getting changed largefiles
806 getting changed largefiles
807 2 largefiles updated, 0 removed
807 2 largefiles updated, 0 removed
808 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
808 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
809 8 additional largefiles cached
809 8 additional largefiles cached
810 $ hg -R a-clone1 verify --large --lfa --lfc
810 $ hg -R a-clone1 verify --large --lfa --lfc
811 checking changesets
811 checking changesets
812 checking manifests
812 checking manifests
813 crosschecking files in changesets and manifests
813 crosschecking files in changesets and manifests
814 checking files
814 checking files
815 10 files, 8 changesets, 24 total revisions
815 10 files, 8 changesets, 24 total revisions
816 searching 8 changesets for largefiles
816 searching 8 changesets for largefiles
817 verified contents of 13 revisions of 6 largefiles
817 verified contents of 13 revisions of 6 largefiles
818 $ hg -R a-clone1 sum
818 $ hg -R a-clone1 sum
819 parent: 1:ce8896473775
819 parent: 1:ce8896473775
820 edit files
820 edit files
821 branch: default
821 branch: default
822 commit: (clean)
822 commit: (clean)
823 update: 6 new changesets (update)
823 update: 6 new changesets (update)
824
824
825 $ rm "${USERCACHE}"/*
825 $ rm "${USERCACHE}"/*
826 $ hg clone --all-largefiles -U a a-clone-u
826 $ hg clone --all-largefiles -U a a-clone-u
827 11 additional largefiles cached
827 11 additional largefiles cached
828 $ hg -R a-clone-u sum
828 $ hg -R a-clone-u sum
829 parent: -1:000000000000 (no revision checked out)
829 parent: -1:000000000000 (no revision checked out)
830 branch: default
830 branch: default
831 commit: (clean)
831 commit: (clean)
832 update: 8 new changesets (update)
832 update: 8 new changesets (update)
833
833
834 Show computed destination directory:
834 Show computed destination directory:
835
835
836 $ mkdir xyz
836 $ mkdir xyz
837 $ cd xyz
837 $ cd xyz
838 $ hg clone ../a
838 $ hg clone ../a
839 destination directory: a
839 destination directory: a
840 updating to branch default
840 updating to branch default
841 getting changed largefiles
841 getting changed largefiles
842 3 largefiles updated, 0 removed
842 3 largefiles updated, 0 removed
843 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
843 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
844 $ cd ..
844 $ cd ..
845
845
846 Clone URL without path:
846 Clone URL without path:
847
847
848 $ hg clone file://
848 $ hg clone file://
849 abort: repository / not found!
849 abort: repository / not found!
850 [255]
850 [255]
851
851
852 Ensure base clone command argument validation
852 Ensure base clone command argument validation
853
853
854 $ hg clone -U -u 0 a a-clone-failure
854 $ hg clone -U -u 0 a a-clone-failure
855 abort: cannot specify both --noupdate and --updaterev
855 abort: cannot specify both --noupdate and --updaterev
856 [255]
856 [255]
857
857
858 $ hg clone --all-largefiles a ssh://localhost/a
858 $ hg clone --all-largefiles a ssh://localhost/a
859 abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
859 abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
860 [255]
860 [255]
861
861
862 Test pulling with --all-largefiles flag. Also test that the largefiles are
862 Test pulling with --all-largefiles flag. Also test that the largefiles are
863 downloaded from 'default' instead of 'default-push' when no source is specified
863 downloaded from 'default' instead of 'default-push' when no source is specified
864 (issue3584)
864 (issue3584)
865
865
866 $ rm -Rf a-backup
866 $ rm -Rf a-backup
867 $ hg clone -r 1 a a-backup
867 $ hg clone -r 1 a a-backup
868 adding changesets
868 adding changesets
869 adding manifests
869 adding manifests
870 adding file changes
870 adding file changes
871 added 2 changesets with 8 changes to 4 files
871 added 2 changesets with 8 changes to 4 files
872 updating to branch default
872 updating to branch default
873 getting changed largefiles
873 getting changed largefiles
874 2 largefiles updated, 0 removed
874 2 largefiles updated, 0 removed
875 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
875 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
876 $ rm "${USERCACHE}"/*
876 $ rm "${USERCACHE}"/*
877 $ cd a-backup
877 $ cd a-backup
878 $ hg pull --all-largefiles --config paths.default-push=bogus/path
878 $ hg pull --all-largefiles --config paths.default-push=bogus/path
879 pulling from $TESTTMP/a (glob)
879 pulling from $TESTTMP/a (glob)
880 searching for changes
880 searching for changes
881 adding changesets
881 adding changesets
882 adding manifests
882 adding manifests
883 adding file changes
883 adding file changes
884 added 6 changesets with 16 changes to 8 files
884 added 6 changesets with 16 changes to 8 files
885 (run 'hg update' to get a working copy)
885 (run 'hg update' to get a working copy)
886 caching new largefiles
886 caching new largefiles
887 3 largefiles cached
887 3 largefiles cached
888 3 additional largefiles cached
888 3 additional largefiles cached
889 $ cd ..
889 $ cd ..
890
890
891 Rebasing between two repositories does not revert largefiles to old
891 Rebasing between two repositories does not revert largefiles to old
892 revisions (this was a very bad bug that took a lot of work to fix).
892 revisions (this was a very bad bug that took a lot of work to fix).
893
893
894 $ hg clone a d
894 $ hg clone a d
895 updating to branch default
895 updating to branch default
896 getting changed largefiles
896 getting changed largefiles
897 3 largefiles updated, 0 removed
897 3 largefiles updated, 0 removed
898 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
898 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
899 $ cd b
899 $ cd b
900 $ echo large4-modified > sub/large4
900 $ echo large4-modified > sub/large4
901 $ echo normal3-modified > normal3
901 $ echo normal3-modified > normal3
902 $ hg commit -m "modify normal file and largefile in repo b"
902 $ hg commit -m "modify normal file and largefile in repo b"
903 Invoking status precommit hook
903 Invoking status precommit hook
904 M normal3
904 M normal3
905 M sub/large4
905 M sub/large4
906 $ cd ../d
906 $ cd ../d
907 $ echo large6-modified > sub2/large6
907 $ echo large6-modified > sub2/large6
908 $ echo normal4-modified > sub/normal4
908 $ echo normal4-modified > sub/normal4
909 $ hg commit -m "modify normal file largefile in repo d"
909 $ hg commit -m "modify normal file largefile in repo d"
910 Invoking status precommit hook
910 Invoking status precommit hook
911 M sub/normal4
911 M sub/normal4
912 M sub2/large6
912 M sub2/large6
913 $ cd ..
913 $ cd ..
914 $ hg clone d e
914 $ hg clone d e
915 updating to branch default
915 updating to branch default
916 getting changed largefiles
916 getting changed largefiles
917 3 largefiles updated, 0 removed
917 3 largefiles updated, 0 removed
918 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
918 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
919 $ cd d
919 $ cd d
920
920
921 More rebase testing, but also test that the largefiles are downloaded from
921 More rebase testing, but also test that the largefiles are downloaded from
922 'default' instead of 'default-push' when no source is specified (issue3584).
922 'default' instead of 'default-push' when no source is specified (issue3584).
923 The error messages go away if repo 'b' is created with --all-largefiles.
923 The error messages go away if repo 'b' is created with --all-largefiles.
924 $ hg pull --rebase --all-largefiles --config paths.default-push=bogus/path --config paths.default=../b
924 $ hg pull --rebase --all-largefiles --config paths.default-push=bogus/path --config paths.default=../b
925 pulling from $TESTTMP/b (glob)
925 pulling from $TESTTMP/b (glob)
926 searching for changes
926 searching for changes
927 adding changesets
927 adding changesets
928 adding manifests
928 adding manifests
929 adding file changes
929 adding file changes
930 added 1 changesets with 2 changes to 2 files (+1 heads)
930 added 1 changesets with 2 changes to 2 files (+1 heads)
931 Invoking status precommit hook
931 Invoking status precommit hook
932 M sub/normal4
932 M sub/normal4
933 M sub2/large6
933 M sub2/large6
934 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
934 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
935 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file large3: can't get file locally (glob)
935 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file large3: can't get file locally (glob)
936 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large4: can't get file locally (glob)
936 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large4: can't get file locally (glob)
937 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file large1: can't get file locally (glob)
937 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file large1: can't get file locally (glob)
938 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
938 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
939 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
939 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
940 error getting id 5f78770c0e77ba4287ad6ef3071c9bf9c379742f from url file:$TESTTMP/b for file large1: can't get file locally (glob)
940 error getting id 5f78770c0e77ba4287ad6ef3071c9bf9c379742f from url file:$TESTTMP/b for file large1: can't get file locally (glob)
941 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
941 error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
942 error getting id 4669e532d5b2c093a78eca010077e708a071bb64 from url file:$TESTTMP/b for file large1: can't get file locally (glob)
942 error getting id 4669e532d5b2c093a78eca010077e708a071bb64 from url file:$TESTTMP/b for file large1: can't get file locally (glob)
943 error getting id 1deebade43c8c498a3c8daddac0244dc55d1331d from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
943 error getting id 1deebade43c8c498a3c8daddac0244dc55d1331d from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob)
944 0 additional largefiles cached
944 0 additional largefiles cached
945 9 largefiles failed to download
945 9 largefiles failed to download
946 nothing to rebase
946 nothing to rebase
947 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
947 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
948 9:598410d3eb9a modify normal file largefile in repo d
948 9:598410d3eb9a modify normal file largefile in repo d
949 8:a381d2c8c80e modify normal file and largefile in repo b
949 8:a381d2c8c80e modify normal file and largefile in repo b
950 7:daea875e9014 add/edit more largefiles
950 7:daea875e9014 add/edit more largefiles
951 6:4355d653f84f edit files yet again
951 6:4355d653f84f edit files yet again
952 5:9d5af5072dbd edit files again
952 5:9d5af5072dbd edit files again
953 4:74c02385b94c move files
953 4:74c02385b94c move files
954 3:9e8fbc4bce62 copy files
954 3:9e8fbc4bce62 copy files
955 2:51a0ae4d5864 remove files
955 2:51a0ae4d5864 remove files
956 1:ce8896473775 edit files
956 1:ce8896473775 edit files
957 0:30d30fe6a5be add files
957 0:30d30fe6a5be add files
958 $ cat normal3
958 $ cat normal3
959 normal3-modified
959 normal3-modified
960 $ cat sub/normal4
960 $ cat sub/normal4
961 normal4-modified
961 normal4-modified
962 $ cat sub/large4
962 $ cat sub/large4
963 large4-modified
963 large4-modified
964 $ cat sub2/large6
964 $ cat sub2/large6
965 large6-modified
965 large6-modified
966 $ cat sub2/large7
966 $ cat sub2/large7
967 large7
967 large7
968 $ cd ../e
968 $ cd ../e
969 $ hg pull ../b
969 $ hg pull ../b
970 pulling from ../b
970 pulling from ../b
971 searching for changes
971 searching for changes
972 adding changesets
972 adding changesets
973 adding manifests
973 adding manifests
974 adding file changes
974 adding file changes
975 added 1 changesets with 2 changes to 2 files (+1 heads)
975 added 1 changesets with 2 changes to 2 files (+1 heads)
976 (run 'hg heads' to see heads, 'hg merge' to merge)
976 (run 'hg heads' to see heads, 'hg merge' to merge)
977 caching new largefiles
977 caching new largefiles
978 0 largefiles cached
978 0 largefiles cached
979 $ hg rebase
979 $ hg rebase
980 Invoking status precommit hook
980 Invoking status precommit hook
981 M sub/normal4
981 M sub/normal4
982 M sub2/large6
982 M sub2/large6
983 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
983 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
984 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
984 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
985 9:598410d3eb9a modify normal file largefile in repo d
985 9:598410d3eb9a modify normal file largefile in repo d
986 8:a381d2c8c80e modify normal file and largefile in repo b
986 8:a381d2c8c80e modify normal file and largefile in repo b
987 7:daea875e9014 add/edit more largefiles
987 7:daea875e9014 add/edit more largefiles
988 6:4355d653f84f edit files yet again
988 6:4355d653f84f edit files yet again
989 5:9d5af5072dbd edit files again
989 5:9d5af5072dbd edit files again
990 4:74c02385b94c move files
990 4:74c02385b94c move files
991 3:9e8fbc4bce62 copy files
991 3:9e8fbc4bce62 copy files
992 2:51a0ae4d5864 remove files
992 2:51a0ae4d5864 remove files
993 1:ce8896473775 edit files
993 1:ce8896473775 edit files
994 0:30d30fe6a5be add files
994 0:30d30fe6a5be add files
995 $ cat normal3
995 $ cat normal3
996 normal3-modified
996 normal3-modified
997 $ cat sub/normal4
997 $ cat sub/normal4
998 normal4-modified
998 normal4-modified
999 $ cat sub/large4
999 $ cat sub/large4
1000 large4-modified
1000 large4-modified
1001 $ cat sub2/large6
1001 $ cat sub2/large6
1002 large6-modified
1002 large6-modified
1003 $ cat sub2/large7
1003 $ cat sub2/large7
1004 large7
1004 large7
1005
1005
1006 Log on largefiles
1006 Log on largefiles
1007
1007
1008 - same output
1008 - same output
1009 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub/large4
1009 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub/large4
1010 8:a381d2c8c80e modify normal file and largefile in repo b
1010 8:a381d2c8c80e modify normal file and largefile in repo b
1011 6:4355d653f84f edit files yet again
1011 6:4355d653f84f edit files yet again
1012 5:9d5af5072dbd edit files again
1012 5:9d5af5072dbd edit files again
1013 4:74c02385b94c move files
1013 4:74c02385b94c move files
1014 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub/large4
1014 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub/large4
1015 8:a381d2c8c80e modify normal file and largefile in repo b
1015 8:a381d2c8c80e modify normal file and largefile in repo b
1016 6:4355d653f84f edit files yet again
1016 6:4355d653f84f edit files yet again
1017 5:9d5af5072dbd edit files again
1017 5:9d5af5072dbd edit files again
1018 4:74c02385b94c move files
1018 4:74c02385b94c move files
1019
1019
1020 - .hglf only matches largefiles, without .hglf it matches 9 bco sub/normal
1020 - .hglf only matches largefiles, without .hglf it matches 9 bco sub/normal
1021 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub
1021 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' .hglf/sub
1022 8:a381d2c8c80e modify normal file and largefile in repo b
1022 8:a381d2c8c80e modify normal file and largefile in repo b
1023 6:4355d653f84f edit files yet again
1023 6:4355d653f84f edit files yet again
1024 5:9d5af5072dbd edit files again
1024 5:9d5af5072dbd edit files again
1025 4:74c02385b94c move files
1025 4:74c02385b94c move files
1026 1:ce8896473775 edit files
1026 1:ce8896473775 edit files
1027 0:30d30fe6a5be add files
1027 0:30d30fe6a5be add files
1028 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub
1028 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' sub
1029 9:598410d3eb9a modify normal file largefile in repo d
1029 9:598410d3eb9a modify normal file largefile in repo d
1030 8:a381d2c8c80e modify normal file and largefile in repo b
1030 8:a381d2c8c80e modify normal file and largefile in repo b
1031 6:4355d653f84f edit files yet again
1031 6:4355d653f84f edit files yet again
1032 5:9d5af5072dbd edit files again
1032 5:9d5af5072dbd edit files again
1033 4:74c02385b94c move files
1033 4:74c02385b94c move files
1034 1:ce8896473775 edit files
1034 1:ce8896473775 edit files
1035 0:30d30fe6a5be add files
1035 0:30d30fe6a5be add files
1036
1036
1037 - globbing gives same result
1037 - globbing gives same result
1038 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 'glob:sub/*'
1038 $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 'glob:sub/*'
1039 9:598410d3eb9a modify normal file largefile in repo d
1039 9:598410d3eb9a modify normal file largefile in repo d
1040 8:a381d2c8c80e modify normal file and largefile in repo b
1040 8:a381d2c8c80e modify normal file and largefile in repo b
1041 6:4355d653f84f edit files yet again
1041 6:4355d653f84f edit files yet again
1042 5:9d5af5072dbd edit files again
1042 5:9d5af5072dbd edit files again
1043 4:74c02385b94c move files
1043 4:74c02385b94c move files
1044 1:ce8896473775 edit files
1044 1:ce8896473775 edit files
1045 0:30d30fe6a5be add files
1045 0:30d30fe6a5be add files
1046
1046
1047 Rollback on largefiles.
1047 Rollback on largefiles.
1048
1048
1049 $ echo large4-modified-again > sub/large4
1049 $ echo large4-modified-again > sub/large4
1050 $ hg commit -m "Modify large4 again"
1050 $ hg commit -m "Modify large4 again"
1051 Invoking status precommit hook
1051 Invoking status precommit hook
1052 M sub/large4
1052 M sub/large4
1053 $ hg rollback
1053 $ hg rollback
1054 repository tip rolled back to revision 9 (undo commit)
1054 repository tip rolled back to revision 9 (undo commit)
1055 working directory now based on revision 9
1055 working directory now based on revision 9
1056 $ hg st
1056 $ hg st
1057 M sub/large4
1057 M sub/large4
1058 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1058 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1059 9:598410d3eb9a modify normal file largefile in repo d
1059 9:598410d3eb9a modify normal file largefile in repo d
1060 8:a381d2c8c80e modify normal file and largefile in repo b
1060 8:a381d2c8c80e modify normal file and largefile in repo b
1061 7:daea875e9014 add/edit more largefiles
1061 7:daea875e9014 add/edit more largefiles
1062 6:4355d653f84f edit files yet again
1062 6:4355d653f84f edit files yet again
1063 5:9d5af5072dbd edit files again
1063 5:9d5af5072dbd edit files again
1064 4:74c02385b94c move files
1064 4:74c02385b94c move files
1065 3:9e8fbc4bce62 copy files
1065 3:9e8fbc4bce62 copy files
1066 2:51a0ae4d5864 remove files
1066 2:51a0ae4d5864 remove files
1067 1:ce8896473775 edit files
1067 1:ce8896473775 edit files
1068 0:30d30fe6a5be add files
1068 0:30d30fe6a5be add files
1069 $ cat sub/large4
1069 $ cat sub/large4
1070 large4-modified-again
1070 large4-modified-again
1071
1071
1072 "update --check" refuses to update with uncommitted changes.
1072 "update --check" refuses to update with uncommitted changes.
1073 $ hg update --check 8
1073 $ hg update --check 8
1074 abort: uncommitted local changes
1074 abort: uncommitted local changes
1075 [255]
1075 [255]
1076
1076
1077 "update --clean" leaves correct largefiles in working copy, even when there is
1077 "update --clean" leaves correct largefiles in working copy, even when there is
1078 .orig files from revert in .hglf.
1078 .orig files from revert in .hglf.
1079
1079
1080 $ echo mistake > sub2/large7
1080 $ echo mistake > sub2/large7
1081 $ hg revert sub2/large7
1081 $ hg revert sub2/large7
1082 $ hg -q update --clean -r null
1082 $ hg -q update --clean -r null
1083 $ hg update --clean
1083 $ hg update --clean
1084 getting changed largefiles
1084 getting changed largefiles
1085 3 largefiles updated, 0 removed
1085 3 largefiles updated, 0 removed
1086 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1086 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1087 $ cat normal3
1087 $ cat normal3
1088 normal3-modified
1088 normal3-modified
1089 $ cat sub/normal4
1089 $ cat sub/normal4
1090 normal4-modified
1090 normal4-modified
1091 $ cat sub/large4
1091 $ cat sub/large4
1092 large4-modified
1092 large4-modified
1093 $ cat sub2/large6
1093 $ cat sub2/large6
1094 large6-modified
1094 large6-modified
1095 $ cat sub2/large7
1095 $ cat sub2/large7
1096 large7
1096 large7
1097 $ cat sub2/large7.orig
1097 $ cat sub2/large7.orig
1098 mistake
1098 mistake
1099 $ cat .hglf/sub2/large7.orig
1099 $ cat .hglf/sub2/large7.orig
1100 9dbfb2c79b1c40981b258c3efa1b10b03f18ad31
1100 9dbfb2c79b1c40981b258c3efa1b10b03f18ad31
1101
1101
1102 demonstrate misfeature: .orig file is overwritten on every update -C,
1102 demonstrate misfeature: .orig file is overwritten on every update -C,
1103 also when clean:
1103 also when clean:
1104 $ hg update --clean
1104 $ hg update --clean
1105 getting changed largefiles
1105 getting changed largefiles
1106 0 largefiles updated, 0 removed
1106 0 largefiles updated, 0 removed
1107 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1107 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1108 $ cat sub2/large7.orig
1108 $ cat sub2/large7.orig
1109 large7
1109 large7
1110 $ rm sub2/large7.orig .hglf/sub2/large7.orig
1110 $ rm sub2/large7.orig .hglf/sub2/large7.orig
1111
1111
1112 Now "update check" is happy.
1112 Now "update check" is happy.
1113 $ hg update --check 8
1113 $ hg update --check 8
1114 getting changed largefiles
1114 getting changed largefiles
1115 1 largefiles updated, 0 removed
1115 1 largefiles updated, 0 removed
1116 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1116 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1117 $ hg update --check
1117 $ hg update --check
1118 getting changed largefiles
1118 getting changed largefiles
1119 1 largefiles updated, 0 removed
1119 1 largefiles updated, 0 removed
1120 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1120 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1121
1121
1122 Test removing empty largefiles directories on update
1122 Test removing empty largefiles directories on update
1123 $ test -d sub2 && echo "sub2 exists"
1123 $ test -d sub2 && echo "sub2 exists"
1124 sub2 exists
1124 sub2 exists
1125 $ hg update -q null
1125 $ hg update -q null
1126 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1126 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1127 [1]
1127 [1]
1128 $ hg update -q
1128 $ hg update -q
1129
1129
1130 Test hg remove removes empty largefiles directories
1130 Test hg remove removes empty largefiles directories
1131 $ test -d sub2 && echo "sub2 exists"
1131 $ test -d sub2 && echo "sub2 exists"
1132 sub2 exists
1132 sub2 exists
1133 $ hg remove sub2/*
1133 $ hg remove sub2/*
1134 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1134 $ test -d sub2 && echo "error: sub2 should not exist anymore"
1135 [1]
1135 [1]
1136 $ hg revert sub2/large6 sub2/large7
1136 $ hg revert sub2/large6 sub2/large7
1137
1137
1138 "revert" works on largefiles (and normal files too).
1138 "revert" works on largefiles (and normal files too).
1139 $ echo hack3 >> normal3
1139 $ echo hack3 >> normal3
1140 $ echo hack4 >> sub/normal4
1140 $ echo hack4 >> sub/normal4
1141 $ echo hack4 >> sub/large4
1141 $ echo hack4 >> sub/large4
1142 $ rm sub2/large6
1142 $ rm sub2/large6
1143 $ hg revert sub2/large6
1143 $ hg revert sub2/large6
1144 $ hg rm sub2/large6
1144 $ hg rm sub2/large6
1145 $ echo new >> sub2/large8
1145 $ echo new >> sub2/large8
1146 $ hg add --large sub2/large8
1146 $ hg add --large sub2/large8
1147 # XXX we don't really want to report that we're reverting the standin;
1147 # XXX we don't really want to report that we're reverting the standin;
1148 # that's just an implementation detail. But I don't see an obvious fix. ;-(
1148 # that's just an implementation detail. But I don't see an obvious fix. ;-(
1149 $ hg revert sub
1149 $ hg revert sub
1150 reverting .hglf/sub/large4 (glob)
1150 reverting .hglf/sub/large4 (glob)
1151 reverting sub/normal4 (glob)
1151 reverting sub/normal4 (glob)
1152 $ hg status
1152 $ hg status
1153 M normal3
1153 M normal3
1154 A sub2/large8
1154 A sub2/large8
1155 R sub2/large6
1155 R sub2/large6
1156 ? sub/large4.orig
1156 ? sub/large4.orig
1157 ? sub/normal4.orig
1157 ? sub/normal4.orig
1158 $ cat sub/normal4
1158 $ cat sub/normal4
1159 normal4-modified
1159 normal4-modified
1160 $ cat sub/large4
1160 $ cat sub/large4
1161 large4-modified
1161 large4-modified
1162 $ hg revert -a --no-backup
1162 $ hg revert -a --no-backup
1163 undeleting .hglf/sub2/large6 (glob)
1163 undeleting .hglf/sub2/large6 (glob)
1164 forgetting .hglf/sub2/large8 (glob)
1164 forgetting .hglf/sub2/large8 (glob)
1165 reverting normal3
1165 reverting normal3
1166 $ hg status
1166 $ hg status
1167 ? sub/large4.orig
1167 ? sub/large4.orig
1168 ? sub/normal4.orig
1168 ? sub/normal4.orig
1169 ? sub2/large8
1169 ? sub2/large8
1170 $ cat normal3
1170 $ cat normal3
1171 normal3-modified
1171 normal3-modified
1172 $ cat sub2/large6
1172 $ cat sub2/large6
1173 large6-modified
1173 large6-modified
1174 $ rm sub/*.orig sub2/large8
1174 $ rm sub/*.orig sub2/large8
1175
1175
1176 revert some files to an older revision
1176 revert some files to an older revision
1177 $ hg revert --no-backup -r 8 sub2
1177 $ hg revert --no-backup -r 8 sub2
1178 reverting .hglf/sub2/large6 (glob)
1178 reverting .hglf/sub2/large6 (glob)
1179 $ cat sub2/large6
1179 $ cat sub2/large6
1180 large6
1180 large6
1181 $ hg revert --no-backup -C -r '.^' sub2
1181 $ hg revert --no-backup -C -r '.^' sub2
1182 reverting .hglf/sub2/large6 (glob)
1182 reverting .hglf/sub2/large6 (glob)
1183 $ hg revert --no-backup sub2
1183 $ hg revert --no-backup sub2
1184 reverting .hglf/sub2/large6 (glob)
1184 reverting .hglf/sub2/large6 (glob)
1185 $ hg status
1185 $ hg status
1186
1186
1187 "verify --large" actually verifies largefiles
1187 "verify --large" actually verifies largefiles
1188
1188
1189 - Where Do We Come From? What Are We? Where Are We Going?
1189 - Where Do We Come From? What Are We? Where Are We Going?
1190 $ pwd
1190 $ pwd
1191 $TESTTMP/e
1191 $TESTTMP/e
1192 $ hg paths
1192 $ hg paths
1193 default = $TESTTMP/d (glob)
1193 default = $TESTTMP/d (glob)
1194
1194
1195 $ hg verify --large
1195 $ hg verify --large
1196 checking changesets
1196 checking changesets
1197 checking manifests
1197 checking manifests
1198 crosschecking files in changesets and manifests
1198 crosschecking files in changesets and manifests
1199 checking files
1199 checking files
1200 10 files, 10 changesets, 28 total revisions
1200 10 files, 10 changesets, 28 total revisions
1201 searching 1 changesets for largefiles
1201 searching 1 changesets for largefiles
1202 verified existence of 3 revisions of 3 largefiles
1202 verified existence of 3 revisions of 3 largefiles
1203
1203
1204 - introduce missing blob in local store repo and make sure that this is caught:
1204 - introduce missing blob in local store repo and make sure that this is caught:
1205 $ mv $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 .
1205 $ mv $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 .
1206 $ hg verify --large
1206 $ hg verify --large
1207 checking changesets
1207 checking changesets
1208 checking manifests
1208 checking manifests
1209 crosschecking files in changesets and manifests
1209 crosschecking files in changesets and manifests
1210 checking files
1210 checking files
1211 10 files, 10 changesets, 28 total revisions
1211 10 files, 10 changesets, 28 total revisions
1212 searching 1 changesets for largefiles
1212 searching 1 changesets for largefiles
1213 changeset 9:598410d3eb9a: sub/large4 references missing $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928
1213 changeset 9:598410d3eb9a: sub/large4 references missing $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 (glob)
1214 verified existence of 3 revisions of 3 largefiles
1214 verified existence of 3 revisions of 3 largefiles
1215 [1]
1215 [1]
1216
1216
1217 - introduce corruption and make sure that it is caught when checking content:
1217 - introduce corruption and make sure that it is caught when checking content:
1218 $ echo '5 cents' > $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928
1218 $ echo '5 cents' > $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928
1219 $ hg verify -q --large --lfc
1219 $ hg verify -q --large --lfc
1220 changeset 9:598410d3eb9a: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928
1220 changeset 9:598410d3eb9a: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 (glob)
1221 [1]
1221 [1]
1222
1222
1223 - cleanup
1223 - cleanup
1224 $ mv e166e74c7303192238d60af5a9c4ce9bef0b7928 $TESTTMP/d/.hg/largefiles/
1224 $ mv e166e74c7303192238d60af5a9c4ce9bef0b7928 $TESTTMP/d/.hg/largefiles/
1225
1225
1226 - verifying all revisions will fail because we didn't clone all largefiles to d:
1226 - verifying all revisions will fail because we didn't clone all largefiles to d:
1227 $ echo 'T-shirt' > $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1227 $ echo 'T-shirt' > $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1228 $ hg verify -q --lfa --lfc
1228 $ hg verify -q --lfa --lfc
1229 changeset 0:30d30fe6a5be: large1 references missing $TESTTMP/d/.hg/largefiles/4669e532d5b2c093a78eca010077e708a071bb64
1229 changeset 0:30d30fe6a5be: large1 references missing $TESTTMP/d/.hg/largefiles/4669e532d5b2c093a78eca010077e708a071bb64 (glob)
1230 changeset 0:30d30fe6a5be: sub/large2 references missing $TESTTMP/d/.hg/largefiles/1deebade43c8c498a3c8daddac0244dc55d1331d
1230 changeset 0:30d30fe6a5be: sub/large2 references missing $TESTTMP/d/.hg/largefiles/1deebade43c8c498a3c8daddac0244dc55d1331d (glob)
1231 changeset 1:ce8896473775: large1 references missing $TESTTMP/d/.hg/largefiles/5f78770c0e77ba4287ad6ef3071c9bf9c379742f
1231 changeset 1:ce8896473775: large1 references missing $TESTTMP/d/.hg/largefiles/5f78770c0e77ba4287ad6ef3071c9bf9c379742f (glob)
1232 changeset 1:ce8896473775: sub/large2 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1232 changeset 1:ce8896473775: sub/large2 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1233 changeset 3:9e8fbc4bce62: large1 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1233 changeset 3:9e8fbc4bce62: large1 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1234 changeset 4:74c02385b94c: large3 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1234 changeset 4:74c02385b94c: large3 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1235 changeset 4:74c02385b94c: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1235 changeset 4:74c02385b94c: sub/large4 references corrupted $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 (glob)
1236 [1]
1236 [1]
1237
1237
1238 - cleanup
1238 - cleanup
1239 $ rm $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1239 $ rm $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
1240
1240
1241 Merging does not revert to old versions of largefiles and also check
1241 Merging does not revert to old versions of largefiles and also check
1242 that merging after having pulled from a non-default remote works
1242 that merging after having pulled from a non-default remote works
1243 correctly.
1243 correctly.
1244
1244
1245 $ cd ..
1245 $ cd ..
1246 $ hg clone -r 7 e temp
1246 $ hg clone -r 7 e temp
1247 adding changesets
1247 adding changesets
1248 adding manifests
1248 adding manifests
1249 adding file changes
1249 adding file changes
1250 added 8 changesets with 24 changes to 10 files
1250 added 8 changesets with 24 changes to 10 files
1251 updating to branch default
1251 updating to branch default
1252 getting changed largefiles
1252 getting changed largefiles
1253 3 largefiles updated, 0 removed
1253 3 largefiles updated, 0 removed
1254 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1254 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1255 $ hg clone temp f
1255 $ hg clone temp f
1256 updating to branch default
1256 updating to branch default
1257 getting changed largefiles
1257 getting changed largefiles
1258 3 largefiles updated, 0 removed
1258 3 largefiles updated, 0 removed
1259 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1259 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1260 # Delete the largefiles in the largefiles system cache so that we have an
1260 # Delete the largefiles in the largefiles system cache so that we have an
1261 # opportunity to test that caching after a pull works.
1261 # opportunity to test that caching after a pull works.
1262 $ rm "${USERCACHE}"/*
1262 $ rm "${USERCACHE}"/*
1263 $ cd f
1263 $ cd f
1264 $ echo "large4-merge-test" > sub/large4
1264 $ echo "large4-merge-test" > sub/large4
1265 $ hg commit -m "Modify large4 to test merge"
1265 $ hg commit -m "Modify large4 to test merge"
1266 Invoking status precommit hook
1266 Invoking status precommit hook
1267 M sub/large4
1267 M sub/large4
1268 $ hg pull ../e
1268 $ hg pull ../e
1269 pulling from ../e
1269 pulling from ../e
1270 searching for changes
1270 searching for changes
1271 adding changesets
1271 adding changesets
1272 adding manifests
1272 adding manifests
1273 adding file changes
1273 adding file changes
1274 added 2 changesets with 4 changes to 4 files (+1 heads)
1274 added 2 changesets with 4 changes to 4 files (+1 heads)
1275 (run 'hg heads' to see heads, 'hg merge' to merge)
1275 (run 'hg heads' to see heads, 'hg merge' to merge)
1276 caching new largefiles
1276 caching new largefiles
1277 2 largefiles cached
1277 2 largefiles cached
1278 $ hg merge
1278 $ hg merge
1279 merging sub/large4
1279 merging sub/large4
1280 largefile sub/large4 has a merge conflict
1280 largefile sub/large4 has a merge conflict
1281 keep (l)ocal or take (o)ther? l
1281 keep (l)ocal or take (o)ther? l
1282 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
1282 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
1283 (branch merge, don't forget to commit)
1283 (branch merge, don't forget to commit)
1284 getting changed largefiles
1284 getting changed largefiles
1285 1 largefiles updated, 0 removed
1285 1 largefiles updated, 0 removed
1286 $ hg commit -m "Merge repos e and f"
1286 $ hg commit -m "Merge repos e and f"
1287 Invoking status precommit hook
1287 Invoking status precommit hook
1288 M normal3
1288 M normal3
1289 M sub/normal4
1289 M sub/normal4
1290 M sub2/large6
1290 M sub2/large6
1291 $ cat normal3
1291 $ cat normal3
1292 normal3-modified
1292 normal3-modified
1293 $ cat sub/normal4
1293 $ cat sub/normal4
1294 normal4-modified
1294 normal4-modified
1295 $ cat sub/large4
1295 $ cat sub/large4
1296 large4-merge-test
1296 large4-merge-test
1297 $ cat sub2/large6
1297 $ cat sub2/large6
1298 large6-modified
1298 large6-modified
1299 $ cat sub2/large7
1299 $ cat sub2/large7
1300 large7
1300 large7
1301
1301
1302 Test status after merging with a branch that introduces a new largefile:
1302 Test status after merging with a branch that introduces a new largefile:
1303
1303
1304 $ echo large > large
1304 $ echo large > large
1305 $ hg add --large large
1305 $ hg add --large large
1306 $ hg commit -m 'add largefile'
1306 $ hg commit -m 'add largefile'
1307 Invoking status precommit hook
1307 Invoking status precommit hook
1308 A large
1308 A large
1309 $ hg update -q ".^"
1309 $ hg update -q ".^"
1310 $ echo change >> normal3
1310 $ echo change >> normal3
1311 $ hg commit -m 'some change'
1311 $ hg commit -m 'some change'
1312 Invoking status precommit hook
1312 Invoking status precommit hook
1313 M normal3
1313 M normal3
1314 created new head
1314 created new head
1315 $ hg merge
1315 $ hg merge
1316 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1316 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1317 (branch merge, don't forget to commit)
1317 (branch merge, don't forget to commit)
1318 getting changed largefiles
1318 getting changed largefiles
1319 1 largefiles updated, 0 removed
1319 1 largefiles updated, 0 removed
1320 $ hg status
1320 $ hg status
1321 M large
1321 M large
1322
1322
1323 - make sure update of merge with removed largefiles fails as expected
1323 - make sure update of merge with removed largefiles fails as expected
1324 $ hg rm sub2/large6
1324 $ hg rm sub2/large6
1325 $ hg up -r.
1325 $ hg up -r.
1326 abort: outstanding uncommitted merges
1326 abort: outstanding uncommitted merges
1327 [255]
1327 [255]
1328
1328
1329 - revert should be able to revert files introduced in a pending merge
1329 - revert should be able to revert files introduced in a pending merge
1330 $ hg revert --all -r .
1330 $ hg revert --all -r .
1331 removing .hglf/large (glob)
1331 removing .hglf/large (glob)
1332 undeleting .hglf/sub2/large6 (glob)
1332 undeleting .hglf/sub2/large6 (glob)
1333
1333
1334 Test that a normal file and a largefile with the same name and path cannot
1334 Test that a normal file and a largefile with the same name and path cannot
1335 coexist.
1335 coexist.
1336
1336
1337 $ rm sub2/large7
1337 $ rm sub2/large7
1338 $ echo "largeasnormal" > sub2/large7
1338 $ echo "largeasnormal" > sub2/large7
1339 $ hg add sub2/large7
1339 $ hg add sub2/large7
1340 sub2/large7 already a largefile
1340 sub2/large7 already a largefile
1341
1341
1342 Test that transplanting a largefile change works correctly.
1342 Test that transplanting a largefile change works correctly.
1343
1343
1344 $ cd ..
1344 $ cd ..
1345 $ hg clone -r 8 d g
1345 $ hg clone -r 8 d g
1346 adding changesets
1346 adding changesets
1347 adding manifests
1347 adding manifests
1348 adding file changes
1348 adding file changes
1349 added 9 changesets with 26 changes to 10 files
1349 added 9 changesets with 26 changes to 10 files
1350 updating to branch default
1350 updating to branch default
1351 getting changed largefiles
1351 getting changed largefiles
1352 3 largefiles updated, 0 removed
1352 3 largefiles updated, 0 removed
1353 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1353 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1354 $ cd g
1354 $ cd g
1355 $ hg transplant -s ../d 598410d3eb9a
1355 $ hg transplant -s ../d 598410d3eb9a
1356 searching for changes
1356 searching for changes
1357 searching for changes
1357 searching for changes
1358 adding changesets
1358 adding changesets
1359 adding manifests
1359 adding manifests
1360 adding file changes
1360 adding file changes
1361 added 1 changesets with 2 changes to 2 files
1361 added 1 changesets with 2 changes to 2 files
1362 getting changed largefiles
1362 getting changed largefiles
1363 1 largefiles updated, 0 removed
1363 1 largefiles updated, 0 removed
1364 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1364 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1365 9:598410d3eb9a modify normal file largefile in repo d
1365 9:598410d3eb9a modify normal file largefile in repo d
1366 8:a381d2c8c80e modify normal file and largefile in repo b
1366 8:a381d2c8c80e modify normal file and largefile in repo b
1367 7:daea875e9014 add/edit more largefiles
1367 7:daea875e9014 add/edit more largefiles
1368 6:4355d653f84f edit files yet again
1368 6:4355d653f84f edit files yet again
1369 5:9d5af5072dbd edit files again
1369 5:9d5af5072dbd edit files again
1370 4:74c02385b94c move files
1370 4:74c02385b94c move files
1371 3:9e8fbc4bce62 copy files
1371 3:9e8fbc4bce62 copy files
1372 2:51a0ae4d5864 remove files
1372 2:51a0ae4d5864 remove files
1373 1:ce8896473775 edit files
1373 1:ce8896473775 edit files
1374 0:30d30fe6a5be add files
1374 0:30d30fe6a5be add files
1375 $ cat normal3
1375 $ cat normal3
1376 normal3-modified
1376 normal3-modified
1377 $ cat sub/normal4
1377 $ cat sub/normal4
1378 normal4-modified
1378 normal4-modified
1379 $ cat sub/large4
1379 $ cat sub/large4
1380 large4-modified
1380 large4-modified
1381 $ cat sub2/large6
1381 $ cat sub2/large6
1382 large6-modified
1382 large6-modified
1383 $ cat sub2/large7
1383 $ cat sub2/large7
1384 large7
1384 large7
1385
1385
1386 Cat a largefile
1386 Cat a largefile
1387 $ hg cat normal3
1387 $ hg cat normal3
1388 normal3-modified
1388 normal3-modified
1389 $ hg cat sub/large4
1389 $ hg cat sub/large4
1390 large4-modified
1390 large4-modified
1391 $ rm "${USERCACHE}"/*
1391 $ rm "${USERCACHE}"/*
1392 $ hg cat -r a381d2c8c80e -o cat.out sub/large4
1392 $ hg cat -r a381d2c8c80e -o cat.out sub/large4
1393 $ cat cat.out
1393 $ cat cat.out
1394 large4-modified
1394 large4-modified
1395 $ rm cat.out
1395 $ rm cat.out
1396 $ hg cat -r a381d2c8c80e normal3
1396 $ hg cat -r a381d2c8c80e normal3
1397 normal3-modified
1397 normal3-modified
1398 $ hg cat -r '.^' normal3
1398 $ hg cat -r '.^' normal3
1399 normal3-modified
1399 normal3-modified
1400 $ hg cat -r '.^' sub/large4 doesntexist
1400 $ hg cat -r '.^' sub/large4 doesntexist
1401 large4-modified
1401 large4-modified
1402 doesntexist: no such file in rev a381d2c8c80e
1402 doesntexist: no such file in rev a381d2c8c80e
1403 [1]
1403 [1]
1404
1404
1405 Test that renaming a largefile results in correct output for status
1405 Test that renaming a largefile results in correct output for status
1406
1406
1407 $ hg rename sub/large4 large4-renamed
1407 $ hg rename sub/large4 large4-renamed
1408 $ hg commit -m "test rename output"
1408 $ hg commit -m "test rename output"
1409 Invoking status precommit hook
1409 Invoking status precommit hook
1410 A large4-renamed
1410 A large4-renamed
1411 R sub/large4
1411 R sub/large4
1412 $ cat large4-renamed
1412 $ cat large4-renamed
1413 large4-modified
1413 large4-modified
1414 $ cd sub2
1414 $ cd sub2
1415 $ hg rename large6 large6-renamed
1415 $ hg rename large6 large6-renamed
1416 $ hg st
1416 $ hg st
1417 A sub2/large6-renamed
1417 A sub2/large6-renamed
1418 R sub2/large6
1418 R sub2/large6
1419 $ cd ..
1419 $ cd ..
1420
1420
1421 Test --normal flag
1421 Test --normal flag
1422
1422
1423 $ dd if=/dev/zero bs=2k count=11k > new-largefile 2> /dev/null
1423 $ dd if=/dev/zero bs=2k count=11k > new-largefile 2> /dev/null
1424 $ hg add --normal --large new-largefile
1424 $ hg add --normal --large new-largefile
1425 abort: --normal cannot be used with --large
1425 abort: --normal cannot be used with --large
1426 [255]
1426 [255]
1427 $ hg add --normal new-largefile
1427 $ hg add --normal new-largefile
1428 new-largefile: up to 69 MB of RAM may be required to manage this file
1428 new-largefile: up to 69 MB of RAM may be required to manage this file
1429 (use 'hg revert new-largefile' to cancel the pending addition)
1429 (use 'hg revert new-largefile' to cancel the pending addition)
1430 $ cd ..
1430 $ cd ..
1431
1431
1432 #if serve
1432 #if serve
1433 vanilla clients not locked out from largefiles servers on vanilla repos
1433 vanilla clients not locked out from largefiles servers on vanilla repos
1434 $ mkdir r1
1434 $ mkdir r1
1435 $ cd r1
1435 $ cd r1
1436 $ hg init
1436 $ hg init
1437 $ echo c1 > f1
1437 $ echo c1 > f1
1438 $ hg add f1
1438 $ hg add f1
1439 $ hg commit -m "m1"
1439 $ hg commit -m "m1"
1440 Invoking status precommit hook
1440 Invoking status precommit hook
1441 A f1
1441 A f1
1442 $ cd ..
1442 $ cd ..
1443 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
1443 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
1444 $ cat hg.pid >> $DAEMON_PIDS
1444 $ cat hg.pid >> $DAEMON_PIDS
1445 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
1445 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
1446 requesting all changes
1446 requesting all changes
1447 adding changesets
1447 adding changesets
1448 adding manifests
1448 adding manifests
1449 adding file changes
1449 adding file changes
1450 added 1 changesets with 1 changes to 1 files
1450 added 1 changesets with 1 changes to 1 files
1451 updating to branch default
1451 updating to branch default
1452 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1452 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1453
1453
1454 largefiles clients still work with vanilla servers
1454 largefiles clients still work with vanilla servers
1455 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
1455 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
1456 $ cat hg.pid >> $DAEMON_PIDS
1456 $ cat hg.pid >> $DAEMON_PIDS
1457 $ hg clone http://localhost:$HGPORT1 r3
1457 $ hg clone http://localhost:$HGPORT1 r3
1458 requesting all changes
1458 requesting all changes
1459 adding changesets
1459 adding changesets
1460 adding manifests
1460 adding manifests
1461 adding file changes
1461 adding file changes
1462 added 1 changesets with 1 changes to 1 files
1462 added 1 changesets with 1 changes to 1 files
1463 updating to branch default
1463 updating to branch default
1464 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1464 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1465 #endif
1465 #endif
1466
1466
1467
1467
1468 vanilla clients locked out from largefiles http repos
1468 vanilla clients locked out from largefiles http repos
1469 $ mkdir r4
1469 $ mkdir r4
1470 $ cd r4
1470 $ cd r4
1471 $ hg init
1471 $ hg init
1472 $ echo c1 > f1
1472 $ echo c1 > f1
1473 $ hg add --large f1
1473 $ hg add --large f1
1474 $ hg commit -m "m1"
1474 $ hg commit -m "m1"
1475 Invoking status precommit hook
1475 Invoking status precommit hook
1476 A f1
1476 A f1
1477 $ cd ..
1477 $ cd ..
1478
1478
1479 largefiles can be pushed locally (issue3583)
1479 largefiles can be pushed locally (issue3583)
1480 $ hg init dest
1480 $ hg init dest
1481 $ cd r4
1481 $ cd r4
1482 $ hg outgoing ../dest
1482 $ hg outgoing ../dest
1483 comparing with ../dest
1483 comparing with ../dest
1484 searching for changes
1484 searching for changes
1485 changeset: 0:639881c12b4c
1485 changeset: 0:639881c12b4c
1486 tag: tip
1486 tag: tip
1487 user: test
1487 user: test
1488 date: Thu Jan 01 00:00:00 1970 +0000
1488 date: Thu Jan 01 00:00:00 1970 +0000
1489 summary: m1
1489 summary: m1
1490
1490
1491 $ hg push ../dest
1491 $ hg push ../dest
1492 pushing to ../dest
1492 pushing to ../dest
1493 searching for changes
1493 searching for changes
1494 searching for changes
1494 searching for changes
1495 adding changesets
1495 adding changesets
1496 adding manifests
1496 adding manifests
1497 adding file changes
1497 adding file changes
1498 added 1 changesets with 1 changes to 1 files
1498 added 1 changesets with 1 changes to 1 files
1499
1499
1500 exit code with nothing outgoing (issue3611)
1500 exit code with nothing outgoing (issue3611)
1501 $ hg outgoing ../dest
1501 $ hg outgoing ../dest
1502 comparing with ../dest
1502 comparing with ../dest
1503 searching for changes
1503 searching for changes
1504 no changes found
1504 no changes found
1505 [1]
1505 [1]
1506 $ cd ..
1506 $ cd ..
1507
1507
1508 #if serve
1508 #if serve
1509 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
1509 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
1510 $ cat hg.pid >> $DAEMON_PIDS
1510 $ cat hg.pid >> $DAEMON_PIDS
1511 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
1511 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
1512 abort: remote error:
1512 abort: remote error:
1513
1513
1514 This repository uses the largefiles extension.
1514 This repository uses the largefiles extension.
1515
1515
1516 Please enable it in your Mercurial config file.
1516 Please enable it in your Mercurial config file.
1517 [255]
1517 [255]
1518
1518
1519 used all HGPORTs, kill all daemons
1519 used all HGPORTs, kill all daemons
1520 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1520 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1521 #endif
1521 #endif
1522
1522
1523 vanilla clients locked out from largefiles ssh repos
1523 vanilla clients locked out from largefiles ssh repos
1524 $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5
1524 $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5
1525 abort: remote error:
1525 abort: remote error:
1526
1526
1527 This repository uses the largefiles extension.
1527 This repository uses the largefiles extension.
1528
1528
1529 Please enable it in your Mercurial config file.
1529 Please enable it in your Mercurial config file.
1530 [255]
1530 [255]
1531
1531
1532 #if serve
1532 #if serve
1533
1533
1534 largefiles clients refuse to push largefiles repos to vanilla servers
1534 largefiles clients refuse to push largefiles repos to vanilla servers
1535 $ mkdir r6
1535 $ mkdir r6
1536 $ cd r6
1536 $ cd r6
1537 $ hg init
1537 $ hg init
1538 $ echo c1 > f1
1538 $ echo c1 > f1
1539 $ hg add f1
1539 $ hg add f1
1540 $ hg commit -m "m1"
1540 $ hg commit -m "m1"
1541 Invoking status precommit hook
1541 Invoking status precommit hook
1542 A f1
1542 A f1
1543 $ cat >> .hg/hgrc <<!
1543 $ cat >> .hg/hgrc <<!
1544 > [web]
1544 > [web]
1545 > push_ssl = false
1545 > push_ssl = false
1546 > allow_push = *
1546 > allow_push = *
1547 > !
1547 > !
1548 $ cd ..
1548 $ cd ..
1549 $ hg clone r6 r7
1549 $ hg clone r6 r7
1550 updating to branch default
1550 updating to branch default
1551 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1551 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1552 $ cd r7
1552 $ cd r7
1553 $ echo c2 > f2
1553 $ echo c2 > f2
1554 $ hg add --large f2
1554 $ hg add --large f2
1555 $ hg commit -m "m2"
1555 $ hg commit -m "m2"
1556 Invoking status precommit hook
1556 Invoking status precommit hook
1557 A f2
1557 A f2
1558 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
1558 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
1559 $ cat ../hg.pid >> $DAEMON_PIDS
1559 $ cat ../hg.pid >> $DAEMON_PIDS
1560 $ hg push http://localhost:$HGPORT
1560 $ hg push http://localhost:$HGPORT
1561 pushing to http://localhost:$HGPORT/
1561 pushing to http://localhost:$HGPORT/
1562 searching for changes
1562 searching for changes
1563 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
1563 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
1564 [255]
1564 [255]
1565 $ cd ..
1565 $ cd ..
1566
1566
1567 putlfile errors are shown (issue3123)
1567 putlfile errors are shown (issue3123)
1568 Corrupt the cached largefile in r7 and move it out of the servers usercache
1568 Corrupt the cached largefile in r7 and move it out of the servers usercache
1569 $ mv r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 .
1569 $ mv r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 .
1570 $ echo 'client side corruption' > r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1570 $ echo 'client side corruption' > r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1571 $ rm "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
1571 $ rm "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
1572 $ hg init empty
1572 $ hg init empty
1573 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
1573 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
1574 > --config 'web.allow_push=*' --config web.push_ssl=False
1574 > --config 'web.allow_push=*' --config web.push_ssl=False
1575 $ cat hg.pid >> $DAEMON_PIDS
1575 $ cat hg.pid >> $DAEMON_PIDS
1576 $ hg push -R r7 http://localhost:$HGPORT1
1576 $ hg push -R r7 http://localhost:$HGPORT1
1577 pushing to http://localhost:$HGPORT1/
1577 pushing to http://localhost:$HGPORT1/
1578 searching for changes
1578 searching for changes
1579 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
1579 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
1580 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
1580 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
1581 [255]
1581 [255]
1582 $ mv 4cdac4d8b084d0b599525cf732437fb337d422a8 r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1582 $ mv 4cdac4d8b084d0b599525cf732437fb337d422a8 r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1583 Push of file that exists on server but is corrupted - magic healing would be nice ... but too magic
1583 Push of file that exists on server but is corrupted - magic healing would be nice ... but too magic
1584 $ echo "server side corruption" > empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1584 $ echo "server side corruption" > empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1585 $ hg push -R r7 http://localhost:$HGPORT1
1585 $ hg push -R r7 http://localhost:$HGPORT1
1586 pushing to http://localhost:$HGPORT1/
1586 pushing to http://localhost:$HGPORT1/
1587 searching for changes
1587 searching for changes
1588 searching for changes
1588 searching for changes
1589 remote: adding changesets
1589 remote: adding changesets
1590 remote: adding manifests
1590 remote: adding manifests
1591 remote: adding file changes
1591 remote: adding file changes
1592 remote: added 2 changesets with 2 changes to 2 files
1592 remote: added 2 changesets with 2 changes to 2 files
1593 $ cat empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1593 $ cat empty/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8
1594 server side corruption
1594 server side corruption
1595 $ rm -rf empty
1595 $ rm -rf empty
1596
1596
1597 Push a largefiles repository to a served empty repository
1597 Push a largefiles repository to a served empty repository
1598 $ hg init r8
1598 $ hg init r8
1599 $ echo c3 > r8/f1
1599 $ echo c3 > r8/f1
1600 $ hg add --large r8/f1 -R r8
1600 $ hg add --large r8/f1 -R r8
1601 $ hg commit -m "m1" -R r8
1601 $ hg commit -m "m1" -R r8
1602 Invoking status precommit hook
1602 Invoking status precommit hook
1603 A f1
1603 A f1
1604 $ hg init empty
1604 $ hg init empty
1605 $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
1605 $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
1606 > --config 'web.allow_push=*' --config web.push_ssl=False
1606 > --config 'web.allow_push=*' --config web.push_ssl=False
1607 $ cat hg.pid >> $DAEMON_PIDS
1607 $ cat hg.pid >> $DAEMON_PIDS
1608 $ rm "${USERCACHE}"/*
1608 $ rm "${USERCACHE}"/*
1609 $ hg push -R r8 http://localhost:$HGPORT2/#default
1609 $ hg push -R r8 http://localhost:$HGPORT2/#default
1610 pushing to http://localhost:$HGPORT2/
1610 pushing to http://localhost:$HGPORT2/
1611 searching for changes
1611 searching for changes
1612 searching for changes
1612 searching for changes
1613 remote: adding changesets
1613 remote: adding changesets
1614 remote: adding manifests
1614 remote: adding manifests
1615 remote: adding file changes
1615 remote: adding file changes
1616 remote: added 1 changesets with 1 changes to 1 files
1616 remote: added 1 changesets with 1 changes to 1 files
1617 $ [ -f "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1617 $ [ -f "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1618 $ [ -f empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1618 $ [ -f empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1619
1619
1620 Clone over http, no largefiles pulled on clone.
1620 Clone over http, no largefiles pulled on clone.
1621
1621
1622 $ hg clone http://localhost:$HGPORT2/#default http-clone -U
1622 $ hg clone http://localhost:$HGPORT2/#default http-clone -U
1623 adding changesets
1623 adding changesets
1624 adding manifests
1624 adding manifests
1625 adding file changes
1625 adding file changes
1626 added 1 changesets with 1 changes to 1 files
1626 added 1 changesets with 1 changes to 1 files
1627
1627
1628 test 'verify' with remotestore:
1628 test 'verify' with remotestore:
1629
1629
1630 $ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90
1630 $ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90
1631 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1631 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1632 $ hg -R http-clone verify --large --lfa
1632 $ hg -R http-clone verify --large --lfa
1633 checking changesets
1633 checking changesets
1634 checking manifests
1634 checking manifests
1635 crosschecking files in changesets and manifests
1635 crosschecking files in changesets and manifests
1636 checking files
1636 checking files
1637 1 files, 1 changesets, 1 total revisions
1637 1 files, 1 changesets, 1 total revisions
1638 searching 1 changesets for largefiles
1638 searching 1 changesets for largefiles
1639 changeset 0:cf03e5bb9936: f1 missing
1639 changeset 0:cf03e5bb9936: f1 missing
1640 verified existence of 1 revisions of 1 largefiles
1640 verified existence of 1 revisions of 1 largefiles
1641 [1]
1641 [1]
1642 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1642 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1643 $ hg -R http-clone -q verify --large --lfa
1643 $ hg -R http-clone -q verify --large --lfa
1644
1644
1645 largefiles pulled on update - a largefile missing on the server:
1645 largefiles pulled on update - a largefile missing on the server:
1646 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1646 $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 .
1647 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1647 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1648 getting changed largefiles
1648 getting changed largefiles
1649 abort: remotestore: largefile 02a439e5c31c526465ab1a0ca1f431f76b827b90 is missing
1649 abort: remotestore: largefile 02a439e5c31c526465ab1a0ca1f431f76b827b90 is missing
1650 [255]
1650 [255]
1651 $ hg -R http-clone up -Cqr null
1651 $ hg -R http-clone up -Cqr null
1652
1652
1653 largefiles pulled on update - a largefile corrupted on the server:
1653 largefiles pulled on update - a largefile corrupted on the server:
1654 $ echo corruption > empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90
1654 $ echo corruption > empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90
1655 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1655 $ hg -R http-clone up --config largefiles.usercache=http-clone-usercache
1656 getting changed largefiles
1656 getting changed largefiles
1657 f1: data corruption (expected 02a439e5c31c526465ab1a0ca1f431f76b827b90, got 6a7bb2556144babe3899b25e5428123735bb1e27)
1657 f1: data corruption (expected 02a439e5c31c526465ab1a0ca1f431f76b827b90, got 6a7bb2556144babe3899b25e5428123735bb1e27)
1658 0 largefiles updated, 0 removed
1658 0 largefiles updated, 0 removed
1659 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1659 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1660 $ hg -R http-clone st
1660 $ hg -R http-clone st
1661 ! f1
1661 ! f1
1662 $ [ ! -f http-clone/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1662 $ [ ! -f http-clone/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ]
1663 $ [ ! -f http-clone/f1 ]
1663 $ [ ! -f http-clone/f1 ]
1664 $ [ ! -f http-clone-usercache ]
1664 $ [ ! -f http-clone-usercache ]
1665 $ hg -R http-clone verify --large --lfc
1665 $ hg -R http-clone verify --large --lfc
1666 checking changesets
1666 checking changesets
1667 checking manifests
1667 checking manifests
1668 crosschecking files in changesets and manifests
1668 crosschecking files in changesets and manifests
1669 checking files
1669 checking files
1670 1 files, 1 changesets, 1 total revisions
1670 1 files, 1 changesets, 1 total revisions
1671 searching 1 changesets for largefiles
1671 searching 1 changesets for largefiles
1672 verified contents of 1 revisions of 1 largefiles
1672 verified contents of 1 revisions of 1 largefiles
1673 $ hg -R http-clone up -Cqr null
1673 $ hg -R http-clone up -Cqr null
1674
1674
1675 largefiles pulled on update - no server side problems:
1675 largefiles pulled on update - no server side problems:
1676 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1676 $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/
1677 $ hg -R http-clone --debug up --config largefiles.usercache=http-clone-usercache
1677 $ hg -R http-clone --debug up --config largefiles.usercache=http-clone-usercache
1678 resolving manifests
1678 resolving manifests
1679 overwrite: False, partial: False
1679 overwrite: False, partial: False
1680 ancestor: 000000000000, local: 000000000000+, remote: cf03e5bb9936
1680 ancestor: 000000000000, local: 000000000000+, remote: cf03e5bb9936
1681 .hglf/f1: remote created -> g
1681 .hglf/f1: remote created -> g
1682 updating: .hglf/f1 1/1 files (100.00%)
1682 updating: .hglf/f1 1/1 files (100.00%)
1683 getting .hglf/f1
1683 getting .hglf/f1
1684 getting changed largefiles
1684 getting changed largefiles
1685 using http://localhost:$HGPORT2/
1685 using http://localhost:$HGPORT2/
1686 sending capabilities command
1686 sending capabilities command
1687 getting largefiles: 0/1 lfile (0.00%)
1687 getting largefiles: 0/1 lfile (0.00%)
1688 getting f1:02a439e5c31c526465ab1a0ca1f431f76b827b90
1688 getting f1:02a439e5c31c526465ab1a0ca1f431f76b827b90
1689 sending batch command
1689 sending batch command
1690 sending getlfile command
1690 sending getlfile command
1691 found 02a439e5c31c526465ab1a0ca1f431f76b827b90 in store
1691 found 02a439e5c31c526465ab1a0ca1f431f76b827b90 in store
1692 1 largefiles updated, 0 removed
1692 1 largefiles updated, 0 removed
1693 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1693 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1694
1694
1695 $ ls http-clone-usercache/*
1695 $ ls http-clone-usercache/*
1696 http-clone-usercache/02a439e5c31c526465ab1a0ca1f431f76b827b90
1696 http-clone-usercache/02a439e5c31c526465ab1a0ca1f431f76b827b90
1697
1697
1698 $ rm -rf empty http-clone*
1698 $ rm -rf empty http-clone*
1699
1699
1700 used all HGPORTs, kill all daemons
1700 used all HGPORTs, kill all daemons
1701 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1701 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1702
1702
1703 #endif
1703 #endif
1704
1704
1705
1705
1706 #if unix-permissions
1706 #if unix-permissions
1707
1707
1708 Clone a local repository owned by another user
1708 Clone a local repository owned by another user
1709 We have to simulate that here by setting $HOME and removing write permissions
1709 We have to simulate that here by setting $HOME and removing write permissions
1710 $ ORIGHOME="$HOME"
1710 $ ORIGHOME="$HOME"
1711 $ mkdir alice
1711 $ mkdir alice
1712 $ HOME="`pwd`/alice"
1712 $ HOME="`pwd`/alice"
1713 $ cd alice
1713 $ cd alice
1714 $ hg init pubrepo
1714 $ hg init pubrepo
1715 $ cd pubrepo
1715 $ cd pubrepo
1716 $ dd if=/dev/zero bs=1k count=11k > a-large-file 2> /dev/null
1716 $ dd if=/dev/zero bs=1k count=11k > a-large-file 2> /dev/null
1717 $ hg add --large a-large-file
1717 $ hg add --large a-large-file
1718 $ hg commit -m "Add a large file"
1718 $ hg commit -m "Add a large file"
1719 Invoking status precommit hook
1719 Invoking status precommit hook
1720 A a-large-file
1720 A a-large-file
1721 $ cd ..
1721 $ cd ..
1722 $ chmod -R a-w pubrepo
1722 $ chmod -R a-w pubrepo
1723 $ cd ..
1723 $ cd ..
1724 $ mkdir bob
1724 $ mkdir bob
1725 $ HOME="`pwd`/bob"
1725 $ HOME="`pwd`/bob"
1726 $ cd bob
1726 $ cd bob
1727 $ hg clone --pull ../alice/pubrepo pubrepo
1727 $ hg clone --pull ../alice/pubrepo pubrepo
1728 requesting all changes
1728 requesting all changes
1729 adding changesets
1729 adding changesets
1730 adding manifests
1730 adding manifests
1731 adding file changes
1731 adding file changes
1732 added 1 changesets with 1 changes to 1 files
1732 added 1 changesets with 1 changes to 1 files
1733 updating to branch default
1733 updating to branch default
1734 getting changed largefiles
1734 getting changed largefiles
1735 1 largefiles updated, 0 removed
1735 1 largefiles updated, 0 removed
1736 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1736 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1737 $ cd ..
1737 $ cd ..
1738 $ chmod -R u+w alice/pubrepo
1738 $ chmod -R u+w alice/pubrepo
1739 $ HOME="$ORIGHOME"
1739 $ HOME="$ORIGHOME"
1740
1740
1741 #endif
1741 #endif
1742
1742
1743 #if symlink
1743 #if symlink
1744
1744
1745 Symlink to a large largefile should behave the same as a symlink to a normal file
1745 Symlink to a large largefile should behave the same as a symlink to a normal file
1746 $ hg init largesymlink
1746 $ hg init largesymlink
1747 $ cd largesymlink
1747 $ cd largesymlink
1748 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
1748 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
1749 $ hg add --large largefile
1749 $ hg add --large largefile
1750 $ hg commit -m "commit a large file"
1750 $ hg commit -m "commit a large file"
1751 Invoking status precommit hook
1751 Invoking status precommit hook
1752 A largefile
1752 A largefile
1753 $ ln -s largefile largelink
1753 $ ln -s largefile largelink
1754 $ hg add largelink
1754 $ hg add largelink
1755 $ hg commit -m "commit a large symlink"
1755 $ hg commit -m "commit a large symlink"
1756 Invoking status precommit hook
1756 Invoking status precommit hook
1757 A largelink
1757 A largelink
1758 $ rm -f largelink
1758 $ rm -f largelink
1759 $ hg up >/dev/null
1759 $ hg up >/dev/null
1760 $ test -f largelink
1760 $ test -f largelink
1761 [1]
1761 [1]
1762 $ test -L largelink
1762 $ test -L largelink
1763 [1]
1763 [1]
1764 $ rm -f largelink # make next part of the test independent of the previous
1764 $ rm -f largelink # make next part of the test independent of the previous
1765 $ hg up -C >/dev/null
1765 $ hg up -C >/dev/null
1766 $ test -f largelink
1766 $ test -f largelink
1767 $ test -L largelink
1767 $ test -L largelink
1768 $ cd ..
1768 $ cd ..
1769
1769
1770 #endif
1770 #endif
1771
1771
1772 test for pattern matching on 'hg status':
1772 test for pattern matching on 'hg status':
1773 to boost performance, largefiles checks whether specified patterns are
1773 to boost performance, largefiles checks whether specified patterns are
1774 related to largefiles in working directory (NOT to STANDIN) or not.
1774 related to largefiles in working directory (NOT to STANDIN) or not.
1775
1775
1776 $ hg init statusmatch
1776 $ hg init statusmatch
1777 $ cd statusmatch
1777 $ cd statusmatch
1778
1778
1779 $ mkdir -p a/b/c/d
1779 $ mkdir -p a/b/c/d
1780 $ echo normal > a/b/c/d/e.normal.txt
1780 $ echo normal > a/b/c/d/e.normal.txt
1781 $ hg add a/b/c/d/e.normal.txt
1781 $ hg add a/b/c/d/e.normal.txt
1782 $ echo large > a/b/c/d/e.large.txt
1782 $ echo large > a/b/c/d/e.large.txt
1783 $ hg add --large a/b/c/d/e.large.txt
1783 $ hg add --large a/b/c/d/e.large.txt
1784 $ mkdir -p a/b/c/x
1784 $ mkdir -p a/b/c/x
1785 $ echo normal > a/b/c/x/y.normal.txt
1785 $ echo normal > a/b/c/x/y.normal.txt
1786 $ hg add a/b/c/x/y.normal.txt
1786 $ hg add a/b/c/x/y.normal.txt
1787 $ hg commit -m 'add files'
1787 $ hg commit -m 'add files'
1788 Invoking status precommit hook
1788 Invoking status precommit hook
1789 A a/b/c/d/e.large.txt
1789 A a/b/c/d/e.large.txt
1790 A a/b/c/d/e.normal.txt
1790 A a/b/c/d/e.normal.txt
1791 A a/b/c/x/y.normal.txt
1791 A a/b/c/x/y.normal.txt
1792
1792
1793 (1) no pattern: no performance boost
1793 (1) no pattern: no performance boost
1794 $ hg status -A
1794 $ hg status -A
1795 C a/b/c/d/e.large.txt
1795 C a/b/c/d/e.large.txt
1796 C a/b/c/d/e.normal.txt
1796 C a/b/c/d/e.normal.txt
1797 C a/b/c/x/y.normal.txt
1797 C a/b/c/x/y.normal.txt
1798
1798
1799 (2) pattern not related to largefiles: performance boost
1799 (2) pattern not related to largefiles: performance boost
1800 $ hg status -A a/b/c/x
1800 $ hg status -A a/b/c/x
1801 C a/b/c/x/y.normal.txt
1801 C a/b/c/x/y.normal.txt
1802
1802
1803 (3) pattern related to largefiles: no performance boost
1803 (3) pattern related to largefiles: no performance boost
1804 $ hg status -A a/b/c/d
1804 $ hg status -A a/b/c/d
1805 C a/b/c/d/e.large.txt
1805 C a/b/c/d/e.large.txt
1806 C a/b/c/d/e.normal.txt
1806 C a/b/c/d/e.normal.txt
1807
1807
1808 (4) pattern related to STANDIN (not to largefiles): performance boost
1808 (4) pattern related to STANDIN (not to largefiles): performance boost
1809 $ hg status -A .hglf/a
1809 $ hg status -A .hglf/a
1810 C .hglf/a/b/c/d/e.large.txt
1810 C .hglf/a/b/c/d/e.large.txt
1811
1811
1812 (5) mixed case: no performance boost
1812 (5) mixed case: no performance boost
1813 $ hg status -A a/b/c/x a/b/c/d
1813 $ hg status -A a/b/c/x a/b/c/d
1814 C a/b/c/d/e.large.txt
1814 C a/b/c/d/e.large.txt
1815 C a/b/c/d/e.normal.txt
1815 C a/b/c/d/e.normal.txt
1816 C a/b/c/x/y.normal.txt
1816 C a/b/c/x/y.normal.txt
1817
1817
1818 verify that largefiles doesn't break filesets
1818 verify that largefiles doesn't break filesets
1819
1819
1820 $ hg log --rev . --exclude "set:binary()"
1820 $ hg log --rev . --exclude "set:binary()"
1821 changeset: 0:41bd42f10efa
1821 changeset: 0:41bd42f10efa
1822 tag: tip
1822 tag: tip
1823 user: test
1823 user: test
1824 date: Thu Jan 01 00:00:00 1970 +0000
1824 date: Thu Jan 01 00:00:00 1970 +0000
1825 summary: add files
1825 summary: add files
1826
1826
1827 verify that large files in subrepos handled properly
1827 verify that large files in subrepos handled properly
1828 $ hg init subrepo
1828 $ hg init subrepo
1829 $ echo "subrepo = subrepo" > .hgsub
1829 $ echo "subrepo = subrepo" > .hgsub
1830 $ hg add .hgsub
1830 $ hg add .hgsub
1831 $ hg ci -m "add subrepo"
1831 $ hg ci -m "add subrepo"
1832 Invoking status precommit hook
1832 Invoking status precommit hook
1833 A .hgsub
1833 A .hgsub
1834 ? .hgsubstate
1834 ? .hgsubstate
1835 $ echo "rev 1" > subrepo/large.txt
1835 $ echo "rev 1" > subrepo/large.txt
1836 $ hg -R subrepo add --large subrepo/large.txt
1836 $ hg -R subrepo add --large subrepo/large.txt
1837 $ hg sum
1837 $ hg sum
1838 parent: 1:8ee150ea2e9c tip
1838 parent: 1:8ee150ea2e9c tip
1839 add subrepo
1839 add subrepo
1840 branch: default
1840 branch: default
1841 commit: 1 subrepos
1841 commit: 1 subrepos
1842 update: (current)
1842 update: (current)
1843 $ hg st
1843 $ hg st
1844 $ hg st -S
1844 $ hg st -S
1845 A subrepo/large.txt
1845 A subrepo/large.txt
1846 $ hg ci -S -m "commit top repo"
1846 $ hg ci -S -m "commit top repo"
1847 committing subrepository subrepo
1847 committing subrepository subrepo
1848 Invoking status precommit hook
1848 Invoking status precommit hook
1849 A large.txt
1849 A large.txt
1850 Invoking status precommit hook
1850 Invoking status precommit hook
1851 M .hgsubstate
1851 M .hgsubstate
1852 # No differences
1852 # No differences
1853 $ hg st -S
1853 $ hg st -S
1854 $ hg sum
1854 $ hg sum
1855 parent: 2:ce4cd0c527a6 tip
1855 parent: 2:ce4cd0c527a6 tip
1856 commit top repo
1856 commit top repo
1857 branch: default
1857 branch: default
1858 commit: (clean)
1858 commit: (clean)
1859 update: (current)
1859 update: (current)
1860 $ echo "rev 2" > subrepo/large.txt
1860 $ echo "rev 2" > subrepo/large.txt
1861 $ hg st -S
1861 $ hg st -S
1862 M subrepo/large.txt
1862 M subrepo/large.txt
1863 $ hg sum
1863 $ hg sum
1864 parent: 2:ce4cd0c527a6 tip
1864 parent: 2:ce4cd0c527a6 tip
1865 commit top repo
1865 commit top repo
1866 branch: default
1866 branch: default
1867 commit: 1 subrepos
1867 commit: 1 subrepos
1868 update: (current)
1868 update: (current)
1869 $ hg ci -m "this commit should fail without -S"
1869 $ hg ci -m "this commit should fail without -S"
1870 abort: uncommitted changes in subrepo subrepo
1870 abort: uncommitted changes in subrepo subrepo
1871 (use --subrepos for recursive commit)
1871 (use --subrepos for recursive commit)
1872 [255]
1872 [255]
1873
1873
1874 Add a normal file to the subrepo, then test archiving
1874 Add a normal file to the subrepo, then test archiving
1875
1875
1876 $ echo 'normal file' > subrepo/normal.txt
1876 $ echo 'normal file' > subrepo/normal.txt
1877 $ hg -R subrepo add subrepo/normal.txt
1877 $ hg -R subrepo add subrepo/normal.txt
1878
1878
1879 Lock in subrepo, otherwise the change isn't archived
1879 Lock in subrepo, otherwise the change isn't archived
1880
1880
1881 $ hg ci -S -m "add normal file to top level"
1881 $ hg ci -S -m "add normal file to top level"
1882 committing subrepository subrepo
1882 committing subrepository subrepo
1883 Invoking status precommit hook
1883 Invoking status precommit hook
1884 M large.txt
1884 M large.txt
1885 A normal.txt
1885 A normal.txt
1886 Invoking status precommit hook
1886 Invoking status precommit hook
1887 M .hgsubstate
1887 M .hgsubstate
1888 $ hg archive -S ../lf_subrepo_archive
1888 $ hg archive -S ../lf_subrepo_archive
1889 $ find ../lf_subrepo_archive | sort
1889 $ find ../lf_subrepo_archive | sort
1890 ../lf_subrepo_archive
1890 ../lf_subrepo_archive
1891 ../lf_subrepo_archive/.hg_archival.txt
1891 ../lf_subrepo_archive/.hg_archival.txt
1892 ../lf_subrepo_archive/.hgsub
1892 ../lf_subrepo_archive/.hgsub
1893 ../lf_subrepo_archive/.hgsubstate
1893 ../lf_subrepo_archive/.hgsubstate
1894 ../lf_subrepo_archive/a
1894 ../lf_subrepo_archive/a
1895 ../lf_subrepo_archive/a/b
1895 ../lf_subrepo_archive/a/b
1896 ../lf_subrepo_archive/a/b/c
1896 ../lf_subrepo_archive/a/b/c
1897 ../lf_subrepo_archive/a/b/c/d
1897 ../lf_subrepo_archive/a/b/c/d
1898 ../lf_subrepo_archive/a/b/c/d/e.large.txt
1898 ../lf_subrepo_archive/a/b/c/d/e.large.txt
1899 ../lf_subrepo_archive/a/b/c/d/e.normal.txt
1899 ../lf_subrepo_archive/a/b/c/d/e.normal.txt
1900 ../lf_subrepo_archive/a/b/c/x
1900 ../lf_subrepo_archive/a/b/c/x
1901 ../lf_subrepo_archive/a/b/c/x/y.normal.txt
1901 ../lf_subrepo_archive/a/b/c/x/y.normal.txt
1902 ../lf_subrepo_archive/subrepo
1902 ../lf_subrepo_archive/subrepo
1903 ../lf_subrepo_archive/subrepo/large.txt
1903 ../lf_subrepo_archive/subrepo/large.txt
1904 ../lf_subrepo_archive/subrepo/normal.txt
1904 ../lf_subrepo_archive/subrepo/normal.txt
1905
1905
1906 Test update with subrepos.
1906 Test update with subrepos.
1907
1907
1908 $ hg update 0
1908 $ hg update 0
1909 getting changed largefiles
1909 getting changed largefiles
1910 0 largefiles updated, 1 removed
1910 0 largefiles updated, 1 removed
1911 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1911 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1912 $ hg status -S
1912 $ hg status -S
1913 $ hg update tip
1913 $ hg update tip
1914 getting changed largefiles
1914 getting changed largefiles
1915 1 largefiles updated, 0 removed
1915 1 largefiles updated, 0 removed
1916 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1916 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1917 $ hg status -S
1917 $ hg status -S
1918 # modify a large file
1918 # modify a large file
1919 $ echo "modified" > subrepo/large.txt
1919 $ echo "modified" > subrepo/large.txt
1920 $ hg st -S
1920 $ hg st -S
1921 M subrepo/large.txt
1921 M subrepo/large.txt
1922 # update -C should revert the change.
1922 # update -C should revert the change.
1923 $ hg update -C
1923 $ hg update -C
1924 getting changed largefiles
1924 getting changed largefiles
1925 1 largefiles updated, 0 removed
1925 1 largefiles updated, 0 removed
1926 getting changed largefiles
1926 getting changed largefiles
1927 0 largefiles updated, 0 removed
1927 0 largefiles updated, 0 removed
1928 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1928 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1929 $ hg status -S
1929 $ hg status -S
1930
1930
1931 Test archiving a revision that references a subrepo that is not yet
1931 Test archiving a revision that references a subrepo that is not yet
1932 cloned (see test-subrepo-recursion.t):
1932 cloned (see test-subrepo-recursion.t):
1933
1933
1934 $ hg clone -U . ../empty
1934 $ hg clone -U . ../empty
1935 $ cd ../empty
1935 $ cd ../empty
1936 $ hg archive --subrepos -r tip ../archive.tar.gz
1936 $ hg archive --subrepos -r tip ../archive.tar.gz
1937 cloning subrepo subrepo from $TESTTMP/statusmatch/subrepo
1937 cloning subrepo subrepo from $TESTTMP/statusmatch/subrepo
1938 $ cd ..
1938 $ cd ..
1939
1939
1940 Test that addremove picks up largefiles prior to the initial commit (issue3541)
1940 Test that addremove picks up largefiles prior to the initial commit (issue3541)
1941
1941
1942 $ hg init addrm2
1942 $ hg init addrm2
1943 $ cd addrm2
1943 $ cd addrm2
1944 $ touch large.dat
1944 $ touch large.dat
1945 $ touch large2.dat
1945 $ touch large2.dat
1946 $ touch normal
1946 $ touch normal
1947 $ hg add --large large.dat
1947 $ hg add --large large.dat
1948 $ hg addremove -v
1948 $ hg addremove -v
1949 adding large2.dat as a largefile
1949 adding large2.dat as a largefile
1950 adding normal
1950 adding normal
1951
1951
1952 Test that forgetting all largefiles reverts to islfilesrepo() == False
1952 Test that forgetting all largefiles reverts to islfilesrepo() == False
1953 (addremove will add *.dat as normal files now)
1953 (addremove will add *.dat as normal files now)
1954 $ hg forget large.dat
1954 $ hg forget large.dat
1955 $ hg forget large2.dat
1955 $ hg forget large2.dat
1956 $ hg addremove -v
1956 $ hg addremove -v
1957 adding large.dat
1957 adding large.dat
1958 adding large2.dat
1958 adding large2.dat
1959
1959
1960 Test commit's addremove option prior to the first commit
1960 Test commit's addremove option prior to the first commit
1961 $ hg forget large.dat
1961 $ hg forget large.dat
1962 $ hg forget large2.dat
1962 $ hg forget large2.dat
1963 $ hg add --large large.dat
1963 $ hg add --large large.dat
1964 $ hg ci -Am "commit"
1964 $ hg ci -Am "commit"
1965 adding large2.dat as a largefile
1965 adding large2.dat as a largefile
1966 Invoking status precommit hook
1966 Invoking status precommit hook
1967 A large.dat
1967 A large.dat
1968 A large2.dat
1968 A large2.dat
1969 A normal
1969 A normal
1970 $ find .hglf | sort
1970 $ find .hglf | sort
1971 .hglf
1971 .hglf
1972 .hglf/large.dat
1972 .hglf/large.dat
1973 .hglf/large2.dat
1973 .hglf/large2.dat
1974
1974
1975 Test actions on largefiles using relative paths from subdir
1975 Test actions on largefiles using relative paths from subdir
1976
1976
1977 $ mkdir sub
1977 $ mkdir sub
1978 $ cd sub
1978 $ cd sub
1979 $ echo anotherlarge > anotherlarge
1979 $ echo anotherlarge > anotherlarge
1980 $ hg add --large anotherlarge
1980 $ hg add --large anotherlarge
1981 $ hg st
1981 $ hg st
1982 A sub/anotherlarge
1982 A sub/anotherlarge
1983 $ hg st anotherlarge
1983 $ hg st anotherlarge
1984 A anotherlarge
1984 A anotherlarge
1985 $ hg commit -m anotherlarge anotherlarge
1985 $ hg commit -m anotherlarge anotherlarge
1986 Invoking status precommit hook
1986 Invoking status precommit hook
1987 A sub/anotherlarge
1987 A sub/anotherlarge
1988 $ hg log anotherlarge
1988 $ hg log anotherlarge
1989 changeset: 1:9627a577c5e9
1989 changeset: 1:9627a577c5e9
1990 tag: tip
1990 tag: tip
1991 user: test
1991 user: test
1992 date: Thu Jan 01 00:00:00 1970 +0000
1992 date: Thu Jan 01 00:00:00 1970 +0000
1993 summary: anotherlarge
1993 summary: anotherlarge
1994
1994
1995 $ echo more >> anotherlarge
1995 $ echo more >> anotherlarge
1996 $ hg st .
1996 $ hg st .
1997 M anotherlarge
1997 M anotherlarge
1998 $ hg cat anotherlarge
1998 $ hg cat anotherlarge
1999 anotherlarge
1999 anotherlarge
2000 $ hg revert anotherlarge
2000 $ hg revert anotherlarge
2001 $ hg st
2001 $ hg st
2002 ? sub/anotherlarge.orig
2002 ? sub/anotherlarge.orig
2003 $ cd ..
2003 $ cd ..
2004
2004
2005 $ cd ..
2005 $ cd ..
2006
2006
2007 issue3651: summary/outgoing with largefiles shows "no remote repo"
2007 issue3651: summary/outgoing with largefiles shows "no remote repo"
2008 unexpectedly
2008 unexpectedly
2009
2009
2010 $ mkdir issue3651
2010 $ mkdir issue3651
2011 $ cd issue3651
2011 $ cd issue3651
2012
2012
2013 $ hg init src
2013 $ hg init src
2014 $ echo a > src/a
2014 $ echo a > src/a
2015 $ hg -R src add --large src/a
2015 $ hg -R src add --large src/a
2016 $ hg -R src commit -m '#0'
2016 $ hg -R src commit -m '#0'
2017 Invoking status precommit hook
2017 Invoking status precommit hook
2018 A a
2018 A a
2019
2019
2020 check messages when no remote repository is specified:
2020 check messages when no remote repository is specified:
2021 "no remote repo" route for "hg outgoing --large" is not tested here,
2021 "no remote repo" route for "hg outgoing --large" is not tested here,
2022 because it can't be reproduced easily.
2022 because it can't be reproduced easily.
2023
2023
2024 $ hg init clone1
2024 $ hg init clone1
2025 $ hg -R clone1 -q pull src
2025 $ hg -R clone1 -q pull src
2026 $ hg -R clone1 -q update
2026 $ hg -R clone1 -q update
2027 $ hg -R clone1 paths | grep default
2027 $ hg -R clone1 paths | grep default
2028 [1]
2028 [1]
2029
2029
2030 $ hg -R clone1 summary --large
2030 $ hg -R clone1 summary --large
2031 parent: 0:fc0bd45326d3 tip
2031 parent: 0:fc0bd45326d3 tip
2032 #0
2032 #0
2033 branch: default
2033 branch: default
2034 commit: (clean)
2034 commit: (clean)
2035 update: (current)
2035 update: (current)
2036 largefiles: (no remote repo)
2036 largefiles: (no remote repo)
2037
2037
2038 check messages when there is no files to upload:
2038 check messages when there is no files to upload:
2039
2039
2040 $ hg -q clone src clone2
2040 $ hg -q clone src clone2
2041 $ hg -R clone2 paths | grep default
2041 $ hg -R clone2 paths | grep default
2042 default = $TESTTMP/issue3651/src (glob)
2042 default = $TESTTMP/issue3651/src (glob)
2043
2043
2044 $ hg -R clone2 summary --large
2044 $ hg -R clone2 summary --large
2045 parent: 0:fc0bd45326d3 tip
2045 parent: 0:fc0bd45326d3 tip
2046 #0
2046 #0
2047 branch: default
2047 branch: default
2048 commit: (clean)
2048 commit: (clean)
2049 update: (current)
2049 update: (current)
2050 searching for changes
2050 searching for changes
2051 largefiles: (no files to upload)
2051 largefiles: (no files to upload)
2052 $ hg -R clone2 outgoing --large
2052 $ hg -R clone2 outgoing --large
2053 comparing with $TESTTMP/issue3651/src (glob)
2053 comparing with $TESTTMP/issue3651/src (glob)
2054 searching for changes
2054 searching for changes
2055 no changes found
2055 no changes found
2056 searching for changes
2056 searching for changes
2057 largefiles: no files to upload
2057 largefiles: no files to upload
2058 [1]
2058 [1]
2059
2059
2060 check messages when there are files to upload:
2060 check messages when there are files to upload:
2061
2061
2062 $ echo b > clone2/b
2062 $ echo b > clone2/b
2063 $ hg -R clone2 add --large clone2/b
2063 $ hg -R clone2 add --large clone2/b
2064 $ hg -R clone2 commit -m '#1'
2064 $ hg -R clone2 commit -m '#1'
2065 Invoking status precommit hook
2065 Invoking status precommit hook
2066 A b
2066 A b
2067 $ hg -R clone2 summary --large
2067 $ hg -R clone2 summary --large
2068 parent: 1:1acbe71ce432 tip
2068 parent: 1:1acbe71ce432 tip
2069 #1
2069 #1
2070 branch: default
2070 branch: default
2071 commit: (clean)
2071 commit: (clean)
2072 update: (current)
2072 update: (current)
2073 searching for changes
2073 searching for changes
2074 largefiles: 1 to upload
2074 largefiles: 1 to upload
2075 $ hg -R clone2 outgoing --large
2075 $ hg -R clone2 outgoing --large
2076 comparing with $TESTTMP/issue3651/src (glob)
2076 comparing with $TESTTMP/issue3651/src (glob)
2077 searching for changes
2077 searching for changes
2078 changeset: 1:1acbe71ce432
2078 changeset: 1:1acbe71ce432
2079 tag: tip
2079 tag: tip
2080 user: test
2080 user: test
2081 date: Thu Jan 01 00:00:00 1970 +0000
2081 date: Thu Jan 01 00:00:00 1970 +0000
2082 summary: #1
2082 summary: #1
2083
2083
2084 searching for changes
2084 searching for changes
2085 largefiles to upload:
2085 largefiles to upload:
2086 b
2086 b
2087
2087
2088
2088
2089 $ cd ..
2089 $ cd ..
@@ -1,350 +1,350
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 > graphlog =
7 > graphlog =
8 > mq =
8 > mq =
9 > convert =
9 > convert =
10 > [largefiles]
10 > [largefiles]
11 > minsize = 0.5
11 > minsize = 0.5
12 > patterns = **.other
12 > patterns = **.other
13 > **.dat
13 > **.dat
14 > usercache=${USERCACHE}
14 > usercache=${USERCACHE}
15 > EOF
15 > EOF
16
16
17 "lfconvert" works
17 "lfconvert" works
18 $ hg init bigfile-repo
18 $ hg init bigfile-repo
19 $ cd bigfile-repo
19 $ cd bigfile-repo
20 $ cat >> .hg/hgrc <<EOF
20 $ cat >> .hg/hgrc <<EOF
21 > [extensions]
21 > [extensions]
22 > largefiles = !
22 > largefiles = !
23 > EOF
23 > EOF
24 $ mkdir sub
24 $ mkdir sub
25 $ dd if=/dev/zero bs=1k count=256 > large 2> /dev/null
25 $ dd if=/dev/zero bs=1k count=256 > large 2> /dev/null
26 $ dd if=/dev/zero bs=1k count=256 > large2 2> /dev/null
26 $ dd if=/dev/zero bs=1k count=256 > large2 2> /dev/null
27 $ echo normal > normal1
27 $ echo normal > normal1
28 $ echo alsonormal > sub/normal2
28 $ echo alsonormal > sub/normal2
29 $ dd if=/dev/zero bs=1k count=10 > sub/maybelarge.dat 2> /dev/null
29 $ dd if=/dev/zero bs=1k count=10 > sub/maybelarge.dat 2> /dev/null
30 $ hg addremove
30 $ hg addremove
31 adding large
31 adding large
32 adding large2
32 adding large2
33 adding normal1
33 adding normal1
34 adding sub/maybelarge.dat
34 adding sub/maybelarge.dat
35 adding sub/normal2
35 adding sub/normal2
36 $ hg commit -m"add large, normal1" large normal1
36 $ hg commit -m"add large, normal1" large normal1
37 $ hg commit -m"add sub/*" sub
37 $ hg commit -m"add sub/*" sub
38
38
39 Test tag parsing
39 Test tag parsing
40 $ cat >> .hgtags <<EOF
40 $ cat >> .hgtags <<EOF
41 > IncorrectlyFormattedTag!
41 > IncorrectlyFormattedTag!
42 > invalidhash sometag
42 > invalidhash sometag
43 > 0123456789abcdef anothertag
43 > 0123456789abcdef anothertag
44 > EOF
44 > EOF
45 $ hg add .hgtags
45 $ hg add .hgtags
46 $ hg commit -m"add large2" large2 .hgtags
46 $ hg commit -m"add large2" large2 .hgtags
47
47
48 Test link+rename largefile codepath
48 Test link+rename largefile codepath
49 $ [ -d .hg/largefiles ] && echo fail || echo pass
49 $ [ -d .hg/largefiles ] && echo fail || echo pass
50 pass
50 pass
51 $ cd ..
51 $ cd ..
52 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
52 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
53 initializing destination largefiles-repo
53 initializing destination largefiles-repo
54 skipping incorrectly formatted tag IncorrectlyFormattedTag!
54 skipping incorrectly formatted tag IncorrectlyFormattedTag!
55 skipping incorrectly formatted id invalidhash
55 skipping incorrectly formatted id invalidhash
56 no mapping for id 0123456789abcdef
56 no mapping for id 0123456789abcdef
57 #if symlink
57 #if symlink
58 $ hg --cwd bigfile-repo rename large2 large3
58 $ hg --cwd bigfile-repo rename large2 large3
59 $ ln -sf large bigfile-repo/large3
59 $ ln -sf large bigfile-repo/large3
60 $ hg --cwd bigfile-repo commit -m"make large2 a symlink" large2 large3
60 $ hg --cwd bigfile-repo commit -m"make large2 a symlink" large2 large3
61 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo-symlink
61 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo-symlink
62 initializing destination largefiles-repo-symlink
62 initializing destination largefiles-repo-symlink
63 skipping incorrectly formatted tag IncorrectlyFormattedTag!
63 skipping incorrectly formatted tag IncorrectlyFormattedTag!
64 skipping incorrectly formatted id invalidhash
64 skipping incorrectly formatted id invalidhash
65 no mapping for id 0123456789abcdef
65 no mapping for id 0123456789abcdef
66 abort: renamed/copied largefile large3 becomes symlink
66 abort: renamed/copied largefile large3 becomes symlink
67 [255]
67 [255]
68 #endif
68 #endif
69 $ cd bigfile-repo
69 $ cd bigfile-repo
70 $ hg strip --no-backup 2
70 $ hg strip --no-backup 2
71 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
71 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
72 $ cd ..
72 $ cd ..
73 $ rm -rf largefiles-repo largefiles-repo-symlink
73 $ rm -rf largefiles-repo largefiles-repo-symlink
74
74
75 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
75 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
76 initializing destination largefiles-repo
76 initializing destination largefiles-repo
77
77
78 "lfconvert" converts content correctly
78 "lfconvert" converts content correctly
79 $ cd largefiles-repo
79 $ cd largefiles-repo
80 $ hg up
80 $ hg up
81 getting changed largefiles
81 getting changed largefiles
82 2 largefiles updated, 0 removed
82 2 largefiles updated, 0 removed
83 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
84 $ hg locate
84 $ hg locate
85 .hglf/large
85 .hglf/large
86 .hglf/sub/maybelarge.dat
86 .hglf/sub/maybelarge.dat
87 normal1
87 normal1
88 sub/normal2
88 sub/normal2
89 $ cat normal1
89 $ cat normal1
90 normal
90 normal
91 $ cat sub/normal2
91 $ cat sub/normal2
92 alsonormal
92 alsonormal
93 $ "$TESTDIR/md5sum.py" large sub/maybelarge.dat
93 $ "$TESTDIR/md5sum.py" large sub/maybelarge.dat
94 ec87a838931d4d5d2e94a04644788a55 large
94 ec87a838931d4d5d2e94a04644788a55 large
95 1276481102f218c981e0324180bafd9f sub/maybelarge.dat
95 1276481102f218c981e0324180bafd9f sub/maybelarge.dat
96
96
97 "lfconvert" adds 'largefiles' to .hg/requires.
97 "lfconvert" adds 'largefiles' to .hg/requires.
98 $ cat .hg/requires
98 $ cat .hg/requires
99 dotencode
99 dotencode
100 fncache
100 fncache
101 largefiles
101 largefiles
102 revlogv1
102 revlogv1
103 store
103 store
104
104
105 "lfconvert" includes a newline at the end of the standin files.
105 "lfconvert" includes a newline at the end of the standin files.
106 $ cat .hglf/large .hglf/sub/maybelarge.dat
106 $ cat .hglf/large .hglf/sub/maybelarge.dat
107 2e000fa7e85759c7f4c254d4d9c33ef481e459a7
107 2e000fa7e85759c7f4c254d4d9c33ef481e459a7
108 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
108 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
109 $ cd ..
109 $ cd ..
110
110
111 add some changesets to rename/remove/merge
111 add some changesets to rename/remove/merge
112 $ cd bigfile-repo
112 $ cd bigfile-repo
113 $ hg mv -q sub stuff
113 $ hg mv -q sub stuff
114 $ hg commit -m"rename sub/ to stuff/"
114 $ hg commit -m"rename sub/ to stuff/"
115 $ hg update -q 1
115 $ hg update -q 1
116 $ echo blah >> normal3
116 $ echo blah >> normal3
117 $ echo blah >> sub/normal2
117 $ echo blah >> sub/normal2
118 $ echo blah >> sub/maybelarge.dat
118 $ echo blah >> sub/maybelarge.dat
119 $ "$TESTDIR/md5sum.py" sub/maybelarge.dat
119 $ "$TESTDIR/md5sum.py" sub/maybelarge.dat
120 1dd0b99ff80e19cff409702a1d3f5e15 sub/maybelarge.dat
120 1dd0b99ff80e19cff409702a1d3f5e15 sub/maybelarge.dat
121 $ hg commit -A -m"add normal3, modify sub/*"
121 $ hg commit -A -m"add normal3, modify sub/*"
122 adding normal3
122 adding normal3
123 created new head
123 created new head
124 $ hg rm large normal3
124 $ hg rm large normal3
125 $ hg commit -q -m"remove large, normal3"
125 $ hg commit -q -m"remove large, normal3"
126 $ hg merge
126 $ hg merge
127 merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat
127 merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat
128 warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob)
128 warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob)
129 merging stuff/maybelarge.dat incomplete! (edit conflicts, then use 'hg resolve --mark')
129 merging stuff/maybelarge.dat incomplete! (edit conflicts, then use 'hg resolve --mark')
130 merging sub/normal2 and stuff/normal2 to stuff/normal2
130 merging sub/normal2 and stuff/normal2 to stuff/normal2
131 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
131 0 files updated, 1 files merged, 0 files removed, 1 files unresolved
132 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
132 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
133 [1]
133 [1]
134 $ hg cat -r . sub/maybelarge.dat > stuff/maybelarge.dat
134 $ hg cat -r . sub/maybelarge.dat > stuff/maybelarge.dat
135 $ hg resolve -m stuff/maybelarge.dat
135 $ hg resolve -m stuff/maybelarge.dat
136 $ hg commit -m"merge"
136 $ hg commit -m"merge"
137 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
137 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
138 @ 5:4884f215abda merge
138 @ 5:4884f215abda merge
139 |\
139 |\
140 | o 4:7285f817b77e remove large, normal3
140 | o 4:7285f817b77e remove large, normal3
141 | |
141 | |
142 | o 3:67e3892e3534 add normal3, modify sub/*
142 | o 3:67e3892e3534 add normal3, modify sub/*
143 | |
143 | |
144 o | 2:c96c8beb5d56 rename sub/ to stuff/
144 o | 2:c96c8beb5d56 rename sub/ to stuff/
145 |/
145 |/
146 o 1:020c65d24e11 add sub/*
146 o 1:020c65d24e11 add sub/*
147 |
147 |
148 o 0:117b8328f97a add large, normal1
148 o 0:117b8328f97a add large, normal1
149
149
150 $ cd ..
150 $ cd ..
151
151
152 lfconvert with rename, merge, and remove
152 lfconvert with rename, merge, and remove
153 $ rm -rf largefiles-repo
153 $ rm -rf largefiles-repo
154 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
154 $ hg lfconvert --size 0.2 bigfile-repo largefiles-repo
155 initializing destination largefiles-repo
155 initializing destination largefiles-repo
156 $ cd largefiles-repo
156 $ cd largefiles-repo
157 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
157 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
158 o 5:8e05f5f2b77e merge
158 o 5:8e05f5f2b77e merge
159 |\
159 |\
160 | o 4:a5a02de7a8e4 remove large, normal3
160 | o 4:a5a02de7a8e4 remove large, normal3
161 | |
161 | |
162 | o 3:55759520c76f add normal3, modify sub/*
162 | o 3:55759520c76f add normal3, modify sub/*
163 | |
163 | |
164 o | 2:261ad3f3f037 rename sub/ to stuff/
164 o | 2:261ad3f3f037 rename sub/ to stuff/
165 |/
165 |/
166 o 1:334e5237836d add sub/*
166 o 1:334e5237836d add sub/*
167 |
167 |
168 o 0:d4892ec57ce2 add large, normal1
168 o 0:d4892ec57ce2 add large, normal1
169
169
170 $ hg locate -r 2
170 $ hg locate -r 2
171 .hglf/large
171 .hglf/large
172 .hglf/stuff/maybelarge.dat
172 .hglf/stuff/maybelarge.dat
173 normal1
173 normal1
174 stuff/normal2
174 stuff/normal2
175 $ hg locate -r 3
175 $ hg locate -r 3
176 .hglf/large
176 .hglf/large
177 .hglf/sub/maybelarge.dat
177 .hglf/sub/maybelarge.dat
178 normal1
178 normal1
179 normal3
179 normal3
180 sub/normal2
180 sub/normal2
181 $ hg locate -r 4
181 $ hg locate -r 4
182 .hglf/sub/maybelarge.dat
182 .hglf/sub/maybelarge.dat
183 normal1
183 normal1
184 sub/normal2
184 sub/normal2
185 $ hg locate -r 5
185 $ hg locate -r 5
186 .hglf/stuff/maybelarge.dat
186 .hglf/stuff/maybelarge.dat
187 normal1
187 normal1
188 stuff/normal2
188 stuff/normal2
189 $ hg update
189 $ hg update
190 getting changed largefiles
190 getting changed largefiles
191 1 largefiles updated, 0 removed
191 1 largefiles updated, 0 removed
192 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
192 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
193 $ cat stuff/normal2
193 $ cat stuff/normal2
194 alsonormal
194 alsonormal
195 blah
195 blah
196 $ "$TESTDIR/md5sum.py" stuff/maybelarge.dat
196 $ "$TESTDIR/md5sum.py" stuff/maybelarge.dat
197 1dd0b99ff80e19cff409702a1d3f5e15 stuff/maybelarge.dat
197 1dd0b99ff80e19cff409702a1d3f5e15 stuff/maybelarge.dat
198 $ cat .hglf/stuff/maybelarge.dat
198 $ cat .hglf/stuff/maybelarge.dat
199 76236b6a2c6102826c61af4297dd738fb3b1de38
199 76236b6a2c6102826c61af4297dd738fb3b1de38
200 $ cd ..
200 $ cd ..
201
201
202 "lfconvert" error cases
202 "lfconvert" error cases
203 $ hg lfconvert http://localhost/foo foo
203 $ hg lfconvert http://localhost/foo foo
204 abort: http://localhost/foo is not a local Mercurial repo
204 abort: http://localhost/foo is not a local Mercurial repo
205 [255]
205 [255]
206 $ hg lfconvert foo ssh://localhost/foo
206 $ hg lfconvert foo ssh://localhost/foo
207 abort: ssh://localhost/foo is not a local Mercurial repo
207 abort: ssh://localhost/foo is not a local Mercurial repo
208 [255]
208 [255]
209 $ hg lfconvert nosuchrepo foo
209 $ hg lfconvert nosuchrepo foo
210 abort: repository nosuchrepo not found!
210 abort: repository nosuchrepo not found!
211 [255]
211 [255]
212 $ hg share -q -U bigfile-repo shared
212 $ hg share -q -U bigfile-repo shared
213 $ printf 'bogus' > shared/.hg/sharedpath
213 $ printf 'bogus' > shared/.hg/sharedpath
214 $ hg lfconvert shared foo
214 $ hg lfconvert shared foo
215 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! (glob)
215 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! (glob)
216 [255]
216 [255]
217 $ hg lfconvert bigfile-repo largefiles-repo
217 $ hg lfconvert bigfile-repo largefiles-repo
218 initializing destination largefiles-repo
218 initializing destination largefiles-repo
219 abort: repository largefiles-repo already exists!
219 abort: repository largefiles-repo already exists!
220 [255]
220 [255]
221
221
222 add another largefile to the new largefiles repo
222 add another largefile to the new largefiles repo
223 $ cd largefiles-repo
223 $ cd largefiles-repo
224 $ dd if=/dev/zero bs=1k count=1k > anotherlarge 2> /dev/null
224 $ dd if=/dev/zero bs=1k count=1k > anotherlarge 2> /dev/null
225 $ hg add --lfsize=1 anotherlarge
225 $ hg add --lfsize=1 anotherlarge
226 $ hg commit -m "add anotherlarge (should be a largefile)"
226 $ hg commit -m "add anotherlarge (should be a largefile)"
227 $ cat .hglf/anotherlarge
227 $ cat .hglf/anotherlarge
228 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
228 3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
229 $ cd ..
229 $ cd ..
230
230
231 round-trip: converting back to a normal (non-largefiles) repo with
231 round-trip: converting back to a normal (non-largefiles) repo with
232 "lfconvert --to-normal" should give the same as ../bigfile-repo
232 "lfconvert --to-normal" should give the same as ../bigfile-repo
233 $ cd largefiles-repo
233 $ cd largefiles-repo
234 $ hg lfconvert --to-normal . ../normal-repo
234 $ hg lfconvert --to-normal . ../normal-repo
235 initializing destination ../normal-repo
235 initializing destination ../normal-repo
236 $ cd ../normal-repo
236 $ cd ../normal-repo
237 $ cat >> .hg/hgrc <<EOF
237 $ cat >> .hg/hgrc <<EOF
238 > [extensions]
238 > [extensions]
239 > largefiles = !
239 > largefiles = !
240 > EOF
240 > EOF
241
241
242 # Hmmm: the changeset ID for rev 5 is different from the original
242 # Hmmm: the changeset ID for rev 5 is different from the original
243 # normal repo (../bigfile-repo), because the changelog filelist
243 # normal repo (../bigfile-repo), because the changelog filelist
244 # differs between the two incarnations of rev 5: this repo includes
244 # differs between the two incarnations of rev 5: this repo includes
245 # 'large' in the list, but ../bigfile-repo does not. Since rev 5
245 # 'large' in the list, but ../bigfile-repo does not. Since rev 5
246 # removes 'large' relative to the first parent in both repos, it seems
246 # removes 'large' relative to the first parent in both repos, it seems
247 # to me that lfconvert is doing a *better* job than
247 # to me that lfconvert is doing a *better* job than
248 # "hg remove" + "hg merge" + "hg commit".
248 # "hg remove" + "hg merge" + "hg commit".
249 # $ hg -R ../bigfile-repo debugdata -c 5
249 # $ hg -R ../bigfile-repo debugdata -c 5
250 # $ hg debugdata -c 5
250 # $ hg debugdata -c 5
251 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
251 $ hg glog --template "{rev}:{node|short} {desc|firstline}\n"
252 o 6:1635824e6f59 add anotherlarge (should be a largefile)
252 o 6:1635824e6f59 add anotherlarge (should be a largefile)
253 |
253 |
254 o 5:7215f8deeaaf merge
254 o 5:7215f8deeaaf merge
255 |\
255 |\
256 | o 4:7285f817b77e remove large, normal3
256 | o 4:7285f817b77e remove large, normal3
257 | |
257 | |
258 | o 3:67e3892e3534 add normal3, modify sub/*
258 | o 3:67e3892e3534 add normal3, modify sub/*
259 | |
259 | |
260 o | 2:c96c8beb5d56 rename sub/ to stuff/
260 o | 2:c96c8beb5d56 rename sub/ to stuff/
261 |/
261 |/
262 o 1:020c65d24e11 add sub/*
262 o 1:020c65d24e11 add sub/*
263 |
263 |
264 o 0:117b8328f97a add large, normal1
264 o 0:117b8328f97a add large, normal1
265
265
266 $ hg update
266 $ hg update
267 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
267 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
268 $ hg locate
268 $ hg locate
269 anotherlarge
269 anotherlarge
270 normal1
270 normal1
271 stuff/maybelarge.dat
271 stuff/maybelarge.dat
272 stuff/normal2
272 stuff/normal2
273 $ [ -d .hg/largefiles ] && echo fail || echo pass
273 $ [ -d .hg/largefiles ] && echo fail || echo pass
274 pass
274 pass
275
275
276 $ cd ..
276 $ cd ..
277
277
278 Clearing the usercache ensures that commitctx doesn't try to cache largefiles
278 Clearing the usercache ensures that commitctx doesn't try to cache largefiles
279 from the working dir on a convert.
279 from the working dir on a convert.
280 $ rm "${USERCACHE}"/*
280 $ rm "${USERCACHE}"/*
281 $ hg convert largefiles-repo
281 $ hg convert largefiles-repo
282 assuming destination largefiles-repo-hg
282 assuming destination largefiles-repo-hg
283 initializing destination largefiles-repo-hg repository
283 initializing destination largefiles-repo-hg repository
284 scanning source...
284 scanning source...
285 sorting...
285 sorting...
286 converting...
286 converting...
287 6 add large, normal1
287 6 add large, normal1
288 5 add sub/*
288 5 add sub/*
289 4 rename sub/ to stuff/
289 4 rename sub/ to stuff/
290 3 add normal3, modify sub/*
290 3 add normal3, modify sub/*
291 2 remove large, normal3
291 2 remove large, normal3
292 1 merge
292 1 merge
293 0 add anotherlarge (should be a largefile)
293 0 add anotherlarge (should be a largefile)
294
294
295 $ hg -R largefiles-repo-hg glog --template "{rev}:{node|short} {desc|firstline}\n"
295 $ hg -R largefiles-repo-hg glog --template "{rev}:{node|short} {desc|firstline}\n"
296 o 6:17126745edfd add anotherlarge (should be a largefile)
296 o 6:17126745edfd add anotherlarge (should be a largefile)
297 |
297 |
298 o 5:9cc5aa7204f0 merge
298 o 5:9cc5aa7204f0 merge
299 |\
299 |\
300 | o 4:a5a02de7a8e4 remove large, normal3
300 | o 4:a5a02de7a8e4 remove large, normal3
301 | |
301 | |
302 | o 3:55759520c76f add normal3, modify sub/*
302 | o 3:55759520c76f add normal3, modify sub/*
303 | |
303 | |
304 o | 2:261ad3f3f037 rename sub/ to stuff/
304 o | 2:261ad3f3f037 rename sub/ to stuff/
305 |/
305 |/
306 o 1:334e5237836d add sub/*
306 o 1:334e5237836d add sub/*
307 |
307 |
308 o 0:d4892ec57ce2 add large, normal1
308 o 0:d4892ec57ce2 add large, normal1
309
309
310 Verify will fail (for now) if the usercache is purged before converting, since
310 Verify will fail (for now) if the usercache is purged before converting, since
311 largefiles are not cached in the converted repo's local store by the conversion
311 largefiles are not cached in the converted repo's local store by the conversion
312 process.
312 process.
313 $ hg -R largefiles-repo-hg verify --large --lfa
313 $ hg -R largefiles-repo-hg verify --large --lfa
314 checking changesets
314 checking changesets
315 checking manifests
315 checking manifests
316 crosschecking files in changesets and manifests
316 crosschecking files in changesets and manifests
317 checking files
317 checking files
318 8 files, 7 changesets, 12 total revisions
318 8 files, 7 changesets, 12 total revisions
319 searching 7 changesets for largefiles
319 searching 7 changesets for largefiles
320 changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7
320 changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7 (glob)
321 changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
321 changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c (glob)
322 changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
322 changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c (glob)
323 changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38
323 changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 (glob)
324 changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38
324 changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 (glob)
325 changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3
325 changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 (glob)
326 verified existence of 6 revisions of 4 largefiles
326 verified existence of 6 revisions of 4 largefiles
327 [1]
327 [1]
328 $ hg -R largefiles-repo-hg showconfig paths
328 $ hg -R largefiles-repo-hg showconfig paths
329
329
330
330
331 Avoid a traceback if a largefile isn't available (issue3519)
331 Avoid a traceback if a largefile isn't available (issue3519)
332
332
333 Ensure the largefile can be cached in the source if necessary
333 Ensure the largefile can be cached in the source if necessary
334 $ hg clone -U largefiles-repo issue3519
334 $ hg clone -U largefiles-repo issue3519
335 $ rm -f "${USERCACHE}"/*
335 $ rm -f "${USERCACHE}"/*
336 $ hg lfconvert --to-normal issue3519 normalized3519
336 $ hg lfconvert --to-normal issue3519 normalized3519
337 initializing destination normalized3519
337 initializing destination normalized3519
338
338
339 Ensure the abort message is useful if a largefile is entirely unavailable
339 Ensure the abort message is useful if a largefile is entirely unavailable
340 $ rm -rf normalized3519
340 $ rm -rf normalized3519
341 $ rm "${USERCACHE}"/*
341 $ rm "${USERCACHE}"/*
342 $ rm issue3519/.hg/largefiles/*
342 $ rm issue3519/.hg/largefiles/*
343 $ rm largefiles-repo/.hg/largefiles/*
343 $ rm largefiles-repo/.hg/largefiles/*
344 $ hg lfconvert --to-normal issue3519 normalized3519
344 $ hg lfconvert --to-normal issue3519 normalized3519
345 initializing destination normalized3519
345 initializing destination normalized3519
346 error getting id 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 from url file:$TESTTMP/largefiles-repo for file large: can't get file locally (glob)
346 error getting id 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 from url file:$TESTTMP/largefiles-repo for file large: can't get file locally (glob)
347 abort: missing largefile 'large' from revision d4892ec57ce212905215fad1d9018f56b99202ad
347 abort: missing largefile 'large' from revision d4892ec57ce212905215fad1d9018f56b99202ad
348 [255]
348 [255]
349
349
350
350
General Comments 0
You need to be logged in to leave comments. Login now