##// END OF EJS Templates
largefiles: fix trailing spaces in test-largefiles.t...
Thomas Arendsen Hein -
r17594:536fee6a stable
parent child Browse files
Show More
@@ -1,1494 +1,1494 b''
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
1 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
2 $ mkdir "${USERCACHE}"
2 $ mkdir "${USERCACHE}"
3 $ cat >> $HGRCPATH <<EOF
3 $ cat >> $HGRCPATH <<EOF
4 > [extensions]
4 > [extensions]
5 > largefiles=
5 > largefiles=
6 > 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, testing that status correctly shows largefiles and that summary output
20 files, testing that status correctly shows largefiles and that summary output
21 is correct.
21 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 $ echo normal11 > normal1
38 $ echo normal11 > normal1
39 $ echo normal22 > sub/normal2
39 $ echo normal22 > sub/normal2
40 $ echo large11 > large1
40 $ echo large11 > large1
41 $ echo large22 > sub/large2
41 $ echo large22 > sub/large2
42 $ hg commit -m "edit files"
42 $ hg commit -m "edit files"
43 Invoking status precommit hook
43 Invoking status precommit hook
44 M large1
44 M large1
45 M normal1
45 M normal1
46 M sub/large2
46 M sub/large2
47 M sub/normal2
47 M sub/normal2
48 $ hg sum --large
48 $ hg sum --large
49 parent: 1:ce8896473775 tip
49 parent: 1:ce8896473775 tip
50 edit files
50 edit files
51 branch: default
51 branch: default
52 commit: (clean)
52 commit: (clean)
53 update: (current)
53 update: (current)
54 largefiles: No remote repo
54 largefiles: No remote repo
55
55
56 Commit preserved largefile contents.
56 Commit preserved largefile contents.
57
57
58 $ cat normal1
58 $ cat normal1
59 normal11
59 normal11
60 $ cat large1
60 $ cat large1
61 large11
61 large11
62 $ cat sub/normal2
62 $ cat sub/normal2
63 normal22
63 normal22
64 $ cat sub/large2
64 $ cat sub/large2
65 large22
65 large22
66
66
67 Test status, subdir and unknown files
67 Test status, subdir and unknown files
68
68
69 $ echo unknown > sub/unknown
69 $ echo unknown > sub/unknown
70 $ hg st --all
70 $ hg st --all
71 ? sub/unknown
71 ? sub/unknown
72 C large1
72 C large1
73 C normal1
73 C normal1
74 C sub/large2
74 C sub/large2
75 C sub/normal2
75 C sub/normal2
76 $ hg st --all sub
76 $ hg st --all sub
77 ? sub/unknown
77 ? sub/unknown
78 C sub/large2
78 C sub/large2
79 C sub/normal2
79 C sub/normal2
80 $ rm sub/unknown
80 $ rm sub/unknown
81
81
82 Test exit codes for remove warning cases (modified and still exiting)
82 Test exit codes for remove warning cases (modified and still exiting)
83
83
84 $ hg remove -A large1
84 $ hg remove -A large1
85 not removing large1: file still exists (use forget to undo)
85 not removing large1: file still exists (use forget to undo)
86 [1]
86 [1]
87 $ echo 'modified' > large1
87 $ echo 'modified' > large1
88 $ hg remove large1
88 $ hg remove large1
89 not removing large1: file is modified (use forget to undo)
89 not removing large1: file is modified (use forget to undo)
90 [1]
90 [1]
91 $ hg up -Cq
91 $ hg up -Cq
92
92
93 Remove both largefiles and normal files.
93 Remove both largefiles and normal files.
94
94
95 $ hg remove normal1 large1
95 $ hg remove normal1 large1
96 $ hg status large1
96 $ hg status large1
97 R large1
97 R large1
98 $ hg commit -m "remove files"
98 $ hg commit -m "remove files"
99 Invoking status precommit hook
99 Invoking status precommit hook
100 R large1
100 R large1
101 R normal1
101 R normal1
102 $ ls
102 $ ls
103 sub
103 sub
104 $ echo "testlargefile" > large1-test
104 $ echo "testlargefile" > large1-test
105 $ hg add --large large1-test
105 $ hg add --large large1-test
106 $ hg st
106 $ hg st
107 A large1-test
107 A large1-test
108 $ hg rm large1-test
108 $ hg rm large1-test
109 not removing large1-test: file has been marked for add (use forget to undo)
109 not removing large1-test: file has been marked for add (use forget to undo)
110 [1]
110 [1]
111 $ hg st
111 $ hg st
112 A large1-test
112 A large1-test
113 $ hg forget large1-test
113 $ hg forget large1-test
114 $ hg st
114 $ hg st
115 ? large1-test
115 ? large1-test
116 $ hg remove large1-test
116 $ hg remove large1-test
117 not removing large1-test: file is untracked
117 not removing large1-test: file is untracked
118 [1]
118 [1]
119 $ hg forget large1-test
119 $ hg forget large1-test
120 not removing large1-test: file is already untracked
120 not removing large1-test: file is already untracked
121 [1]
121 [1]
122 $ rm large1-test
122 $ rm large1-test
123
123
124 Copy both largefiles and normal files (testing that status output is correct).
124 Copy both largefiles and normal files (testing that status output is correct).
125
125
126 $ hg cp sub/normal2 normal1
126 $ hg cp sub/normal2 normal1
127 $ hg cp sub/large2 large1
127 $ hg cp sub/large2 large1
128 $ hg commit -m "copy files"
128 $ hg commit -m "copy files"
129 Invoking status precommit hook
129 Invoking status precommit hook
130 A large1
130 A large1
131 A normal1
131 A normal1
132 $ cat normal1
132 $ cat normal1
133 normal22
133 normal22
134 $ cat large1
134 $ cat large1
135 large22
135 large22
136
136
137 Test moving largefiles and verify that normal files are also unaffected.
137 Test moving largefiles and verify that normal files are also unaffected.
138
138
139 $ hg mv normal1 normal3
139 $ hg mv normal1 normal3
140 $ hg mv large1 large3
140 $ hg mv large1 large3
141 $ hg mv sub/normal2 sub/normal4
141 $ hg mv sub/normal2 sub/normal4
142 $ hg mv sub/large2 sub/large4
142 $ hg mv sub/large2 sub/large4
143 $ hg commit -m "move files"
143 $ hg commit -m "move files"
144 Invoking status precommit hook
144 Invoking status precommit hook
145 A large3
145 A large3
146 A normal3
146 A normal3
147 A sub/large4
147 A sub/large4
148 A sub/normal4
148 A sub/normal4
149 R large1
149 R large1
150 R normal1
150 R normal1
151 R sub/large2
151 R sub/large2
152 R sub/normal2
152 R sub/normal2
153 $ cat normal3
153 $ cat normal3
154 normal22
154 normal22
155 $ cat large3
155 $ cat large3
156 large22
156 large22
157 $ cat sub/normal4
157 $ cat sub/normal4
158 normal22
158 normal22
159 $ cat sub/large4
159 $ cat sub/large4
160 large22
160 large22
161
161
162 Test copies and moves from a directory other than root (issue3516)
162 Test copies and moves from a directory other than root (issue3516)
163
163
164 $ cd ..
164 $ cd ..
165 $ hg init lf_cpmv
165 $ hg init lf_cpmv
166 $ cd lf_cpmv
166 $ cd lf_cpmv
167 $ mkdir dira
167 $ mkdir dira
168 $ mkdir dira/dirb
168 $ mkdir dira/dirb
169 $ touch dira/dirb/largefile
169 $ touch dira/dirb/largefile
170 $ hg add --large dira/dirb/largefile
170 $ hg add --large dira/dirb/largefile
171 $ hg commit -m "added"
171 $ hg commit -m "added"
172 Invoking status precommit hook
172 Invoking status precommit hook
173 A dira/dirb/largefile
173 A dira/dirb/largefile
174 $ cd dira
174 $ cd dira
175 $ hg cp dirb/largefile foo/largefile
175 $ hg cp dirb/largefile foo/largefile
176 $ hg ci -m "deep copy"
176 $ hg ci -m "deep copy"
177 Invoking status precommit hook
177 Invoking status precommit hook
178 A dira/foo/largefile
178 A dira/foo/largefile
179 $ find . | sort
179 $ find . | sort
180 .
180 .
181 ./dirb
181 ./dirb
182 ./dirb/largefile
182 ./dirb/largefile
183 ./foo
183 ./foo
184 ./foo/largefile
184 ./foo/largefile
185 $ hg mv foo/largefile baz/largefile
185 $ hg mv foo/largefile baz/largefile
186 $ hg ci -m "moved"
186 $ hg ci -m "moved"
187 Invoking status precommit hook
187 Invoking status precommit hook
188 A dira/baz/largefile
188 A dira/baz/largefile
189 R dira/foo/largefile
189 R dira/foo/largefile
190 $ find . | sort
190 $ find . | sort
191 .
191 .
192 ./baz
192 ./baz
193 ./baz/largefile
193 ./baz/largefile
194 ./dirb
194 ./dirb
195 ./dirb/largefile
195 ./dirb/largefile
196 ./foo
196 ./foo
197 $ cd ../../a
197 $ cd ../../a
198
198
199 #if hgweb
199 #if hgweb
200 Test display of largefiles in hgweb
200 Test display of largefiles in hgweb
201
201
202 $ hg serve -d -p $HGPORT --pid-file ../hg.pid
202 $ hg serve -d -p $HGPORT --pid-file ../hg.pid
203 $ cat ../hg.pid >> $DAEMON_PIDS
203 $ cat ../hg.pid >> $DAEMON_PIDS
204 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
204 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
205 200 Script output follows
205 200 Script output follows
206
206
207
207
208 drwxr-xr-x sub
208 drwxr-xr-x sub
209 -rw-r--r-- 41 large3
209 -rw-r--r-- 41 large3
210 -rw-r--r-- 9 normal3
210 -rw-r--r-- 9 normal3
211
211
212
212
213 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
213 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
214 200 Script output follows
214 200 Script output follows
215
215
216
216
217 -rw-r--r-- 41 large4
217 -rw-r--r-- 41 large4
218 -rw-r--r-- 9 normal4
218 -rw-r--r-- 9 normal4
219
219
220
220
221 $ "$TESTDIR/killdaemons.py"
221 $ "$TESTDIR/killdaemons.py"
222 #endif
222 #endif
223
223
224 Test archiving the various revisions. These hit corner cases known with
224 Test archiving the various revisions. These hit corner cases known with
225 archiving.
225 archiving.
226
226
227 $ hg archive -r 0 ../archive0
227 $ hg archive -r 0 ../archive0
228 $ hg archive -r 1 ../archive1
228 $ hg archive -r 1 ../archive1
229 $ hg archive -r 2 ../archive2
229 $ hg archive -r 2 ../archive2
230 $ hg archive -r 3 ../archive3
230 $ hg archive -r 3 ../archive3
231 $ hg archive -r 4 ../archive4
231 $ hg archive -r 4 ../archive4
232 $ cd ../archive0
232 $ cd ../archive0
233 $ cat normal1
233 $ cat normal1
234 normal1
234 normal1
235 $ cat large1
235 $ cat large1
236 large1
236 large1
237 $ cat sub/normal2
237 $ cat sub/normal2
238 normal2
238 normal2
239 $ cat sub/large2
239 $ cat sub/large2
240 large2
240 large2
241 $ cd ../archive1
241 $ cd ../archive1
242 $ cat normal1
242 $ cat normal1
243 normal11
243 normal11
244 $ cat large1
244 $ cat large1
245 large11
245 large11
246 $ cat sub/normal2
246 $ cat sub/normal2
247 normal22
247 normal22
248 $ cat sub/large2
248 $ cat sub/large2
249 large22
249 large22
250 $ cd ../archive2
250 $ cd ../archive2
251 $ ls
251 $ ls
252 sub
252 sub
253 $ cat sub/normal2
253 $ cat sub/normal2
254 normal22
254 normal22
255 $ cat sub/large2
255 $ cat sub/large2
256 large22
256 large22
257 $ cd ../archive3
257 $ cd ../archive3
258 $ cat normal1
258 $ cat normal1
259 normal22
259 normal22
260 $ cat large1
260 $ cat large1
261 large22
261 large22
262 $ cat sub/normal2
262 $ cat sub/normal2
263 normal22
263 normal22
264 $ cat sub/large2
264 $ cat sub/large2
265 large22
265 large22
266 $ cd ../archive4
266 $ cd ../archive4
267 $ cat normal3
267 $ cat normal3
268 normal22
268 normal22
269 $ cat large3
269 $ cat large3
270 large22
270 large22
271 $ cat sub/normal4
271 $ cat sub/normal4
272 normal22
272 normal22
273 $ cat sub/large4
273 $ cat sub/large4
274 large22
274 large22
275
275
276 Commit corner case: specify files to commit.
276 Commit corner case: specify files to commit.
277
277
278 $ cd ../a
278 $ cd ../a
279 $ echo normal3 > normal3
279 $ echo normal3 > normal3
280 $ echo large3 > large3
280 $ echo large3 > large3
281 $ echo normal4 > sub/normal4
281 $ echo normal4 > sub/normal4
282 $ echo large4 > sub/large4
282 $ echo large4 > sub/large4
283 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
283 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
284 Invoking status precommit hook
284 Invoking status precommit hook
285 M large3
285 M large3
286 M normal3
286 M normal3
287 M sub/large4
287 M sub/large4
288 M sub/normal4
288 M sub/normal4
289 $ cat normal3
289 $ cat normal3
290 normal3
290 normal3
291 $ cat large3
291 $ cat large3
292 large3
292 large3
293 $ cat sub/normal4
293 $ cat sub/normal4
294 normal4
294 normal4
295 $ cat sub/large4
295 $ cat sub/large4
296 large4
296 large4
297
297
298 One more commit corner case: commit from a subdirectory.
298 One more commit corner case: commit from a subdirectory.
299
299
300 $ cd ../a
300 $ cd ../a
301 $ echo normal33 > normal3
301 $ echo normal33 > normal3
302 $ echo large33 > large3
302 $ echo large33 > large3
303 $ echo normal44 > sub/normal4
303 $ echo normal44 > sub/normal4
304 $ echo large44 > sub/large4
304 $ echo large44 > sub/large4
305 $ cd sub
305 $ cd sub
306 $ hg commit -m "edit files yet again"
306 $ hg commit -m "edit files yet again"
307 Invoking status precommit hook
307 Invoking status precommit hook
308 M large3
308 M large3
309 M normal3
309 M normal3
310 M sub/large4
310 M sub/large4
311 M sub/normal4
311 M sub/normal4
312 $ cat ../normal3
312 $ cat ../normal3
313 normal33
313 normal33
314 $ cat ../large3
314 $ cat ../large3
315 large33
315 large33
316 $ cat normal4
316 $ cat normal4
317 normal44
317 normal44
318 $ cat large4
318 $ cat large4
319 large44
319 large44
320
320
321 Committing standins is not allowed.
321 Committing standins is not allowed.
322
322
323 $ cd ..
323 $ cd ..
324 $ echo large3 > large3
324 $ echo large3 > large3
325 $ hg commit .hglf/large3 -m "try to commit standin"
325 $ hg commit .hglf/large3 -m "try to commit standin"
326 abort: file ".hglf/large3" is a largefile standin
326 abort: file ".hglf/large3" is a largefile standin
327 (commit the largefile itself instead)
327 (commit the largefile itself instead)
328 [255]
328 [255]
329
329
330 Corner cases for adding largefiles.
330 Corner cases for adding largefiles.
331
331
332 $ echo large5 > large5
332 $ echo large5 > large5
333 $ hg add --large large5
333 $ hg add --large large5
334 $ hg add --large large5
334 $ hg add --large large5
335 large5 already a largefile
335 large5 already a largefile
336 $ mkdir sub2
336 $ mkdir sub2
337 $ echo large6 > sub2/large6
337 $ echo large6 > sub2/large6
338 $ echo large7 > sub2/large7
338 $ echo large7 > sub2/large7
339 $ hg add --large sub2
339 $ hg add --large sub2
340 adding sub2/large6 as a largefile (glob)
340 adding sub2/large6 as a largefile (glob)
341 adding sub2/large7 as a largefile (glob)
341 adding sub2/large7 as a largefile (glob)
342 $ hg st
342 $ hg st
343 M large3
343 M large3
344 A large5
344 A large5
345 A sub2/large6
345 A sub2/large6
346 A sub2/large7
346 A sub2/large7
347
347
348 Test "hg status" with combination of 'file pattern' and 'directory
348 Test "hg status" with combination of 'file pattern' and 'directory
349 pattern' for largefiles:
349 pattern' for largefiles:
350
350
351 $ hg status sub2/large6 sub2
351 $ hg status sub2/large6 sub2
352 A sub2/large6
352 A sub2/large6
353 A sub2/large7
353 A sub2/large7
354
354
355 Config settings (pattern **.dat, minsize 2 MB) are respected.
355 Config settings (pattern **.dat, minsize 2 MB) are respected.
356
356
357 $ echo testdata > test.dat
357 $ echo testdata > test.dat
358 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
358 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
359 $ hg add
359 $ hg add
360 adding reallylarge as a largefile
360 adding reallylarge as a largefile
361 adding test.dat as a largefile
361 adding test.dat as a largefile
362
362
363 Test that minsize and --lfsize handle float values;
363 Test that minsize and --lfsize handle float values;
364 also tests that --lfsize overrides largefiles.minsize.
364 also tests that --lfsize overrides largefiles.minsize.
365 (0.250 MB = 256 kB = 262144 B)
365 (0.250 MB = 256 kB = 262144 B)
366
366
367 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
367 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
368 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
368 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
369 $ hg --config largefiles.minsize=.25 add
369 $ hg --config largefiles.minsize=.25 add
370 adding ratherlarge as a largefile
370 adding ratherlarge as a largefile
371 adding medium
371 adding medium
372 $ hg forget medium
372 $ hg forget medium
373 $ hg --config largefiles.minsize=.25 add --lfsize=.125
373 $ hg --config largefiles.minsize=.25 add --lfsize=.125
374 adding medium as a largefile
374 adding medium as a largefile
375 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
375 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
376 $ hg --config largefiles.minsize=.25 add --lfsize=.125
376 $ hg --config largefiles.minsize=.25 add --lfsize=.125
377 adding notlarge
377 adding notlarge
378 $ hg forget notlarge
378 $ hg forget notlarge
379
379
380 Test forget on largefiles.
380 Test forget on largefiles.
381
381
382 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
382 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
383 $ hg commit -m "add/edit more largefiles"
383 $ hg commit -m "add/edit more largefiles"
384 Invoking status precommit hook
384 Invoking status precommit hook
385 A sub2/large6
385 A sub2/large6
386 A sub2/large7
386 A sub2/large7
387 R large3
387 R large3
388 ? large5
388 ? large5
389 ? medium
389 ? medium
390 ? notlarge
390 ? notlarge
391 ? ratherlarge
391 ? ratherlarge
392 ? reallylarge
392 ? reallylarge
393 ? test.dat
393 ? test.dat
394 $ hg st
394 $ hg st
395 ? large3
395 ? large3
396 ? large5
396 ? large5
397 ? medium
397 ? medium
398 ? notlarge
398 ? notlarge
399 ? ratherlarge
399 ? ratherlarge
400 ? reallylarge
400 ? reallylarge
401 ? test.dat
401 ? test.dat
402
402
403 Purge with largefiles: verify that largefiles are still in the working
403 Purge with largefiles: verify that largefiles are still in the working
404 dir after a purge.
404 dir after a purge.
405
405
406 $ hg purge --all
406 $ hg purge --all
407 $ cat sub/large4
407 $ cat sub/large4
408 large44
408 large44
409 $ cat sub2/large6
409 $ cat sub2/large6
410 large6
410 large6
411 $ cat sub2/large7
411 $ cat sub2/large7
412 large7
412 large7
413
413
414 Test addremove: verify that files that should be added as largfiles are added as
414 Test addremove: verify that files that should be added as largfiles are added as
415 such and that already-existing largfiles are not added as normal files by
415 such and that already-existing largfiles are not added as normal files by
416 accident.
416 accident.
417
417
418 $ rm normal3
418 $ rm normal3
419 $ rm sub/large4
419 $ rm sub/large4
420 $ echo "testing addremove with patterns" > testaddremove.dat
420 $ echo "testing addremove with patterns" > testaddremove.dat
421 $ echo "normaladdremove" > normaladdremove
421 $ echo "normaladdremove" > normaladdremove
422 $ hg addremove
422 $ hg addremove
423 removing sub/large4
423 removing sub/large4
424 adding testaddremove.dat as a largefile
424 adding testaddremove.dat as a largefile
425 removing normal3
425 removing normal3
426 adding normaladdremove
426 adding normaladdremove
427
427
428 Test addremove with -R
428 Test addremove with -R
429
429
430 $ hg up -C
430 $ hg up -C
431 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
431 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
432 getting changed largefiles
432 getting changed largefiles
433 1 largefiles updated, 0 removed
433 1 largefiles updated, 0 removed
434 $ rm normal3
434 $ rm normal3
435 $ rm sub/large4
435 $ rm sub/large4
436 $ echo "testing addremove with patterns" > testaddremove.dat
436 $ echo "testing addremove with patterns" > testaddremove.dat
437 $ echo "normaladdremove" > normaladdremove
437 $ echo "normaladdremove" > normaladdremove
438 $ cd ..
438 $ cd ..
439 $ hg -R a addremove
439 $ hg -R a addremove
440 removing sub/large4
440 removing sub/large4
441 adding a/testaddremove.dat as a largefile (glob)
441 adding a/testaddremove.dat as a largefile (glob)
442 removing normal3
442 removing normal3
443 adding normaladdremove
443 adding normaladdremove
444 $ cd a
444 $ cd a
445
445
446 Test 3364
446 Test 3364
447 $ hg clone . ../addrm
447 $ hg clone . ../addrm
448 updating to branch default
448 updating to branch default
449 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
449 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
450 getting changed largefiles
450 getting changed largefiles
451 3 largefiles updated, 0 removed
451 3 largefiles updated, 0 removed
452 $ cd ../addrm
452 $ cd ../addrm
453 $ cat >> .hg/hgrc <<EOF
453 $ cat >> .hg/hgrc <<EOF
454 > [hooks]
454 > [hooks]
455 > post-commit.stat=sh -c "echo \\"Invoking status postcommit hook\\"; hg status -A"
455 > post-commit.stat=sh -c "echo \\"Invoking status postcommit hook\\"; hg status -A"
456 > EOF
456 > EOF
457 $ touch foo
457 $ touch foo
458 $ hg add --large foo
458 $ hg add --large foo
459 $ hg ci -m "add foo"
459 $ hg ci -m "add foo"
460 Invoking status precommit hook
460 Invoking status precommit hook
461 A foo
461 A foo
462 Invoking status postcommit hook
462 Invoking status postcommit hook
463 C foo
463 C foo
464 C normal3
464 C normal3
465 C sub/large4
465 C sub/large4
466 C sub/normal4
466 C sub/normal4
467 C sub2/large6
467 C sub2/large6
468 C sub2/large7
468 C sub2/large7
469 $ rm foo
469 $ rm foo
470 $ hg st
470 $ hg st
471 ! foo
471 ! foo
472 hmm.. no precommit invoked, but there is a postcommit??
472 hmm.. no precommit invoked, but there is a postcommit??
473 $ hg ci -m "will not checkin"
473 $ hg ci -m "will not checkin"
474 nothing changed
474 nothing changed
475 Invoking status postcommit hook
475 Invoking status postcommit hook
476 ! foo
476 ! foo
477 C normal3
477 C normal3
478 C sub/large4
478 C sub/large4
479 C sub/normal4
479 C sub/normal4
480 C sub2/large6
480 C sub2/large6
481 C sub2/large7
481 C sub2/large7
482 [1]
482 [1]
483 $ hg addremove
483 $ hg addremove
484 removing foo
484 removing foo
485 $ hg st
485 $ hg st
486 R foo
486 R foo
487 $ hg ci -m "used to say nothing changed"
487 $ hg ci -m "used to say nothing changed"
488 Invoking status precommit hook
488 Invoking status precommit hook
489 R foo
489 R foo
490 Invoking status postcommit hook
490 Invoking status postcommit hook
491 C normal3
491 C normal3
492 C sub/large4
492 C sub/large4
493 C sub/normal4
493 C sub/normal4
494 C sub2/large6
494 C sub2/large6
495 C sub2/large7
495 C sub2/large7
496 $ hg st
496 $ hg st
497
497
498 Test 3507 (both normal files and largefiles were a problem)
498 Test 3507 (both normal files and largefiles were a problem)
499
499
500 $ touch normal
500 $ touch normal
501 $ touch large
501 $ touch large
502 $ hg add normal
502 $ hg add normal
503 $ hg add --large large
503 $ hg add --large large
504 $ hg ci -m "added"
504 $ hg ci -m "added"
505 Invoking status precommit hook
505 Invoking status precommit hook
506 A large
506 A large
507 A normal
507 A normal
508 Invoking status postcommit hook
508 Invoking status postcommit hook
509 C large
509 C large
510 C normal
510 C normal
511 C normal3
511 C normal3
512 C sub/large4
512 C sub/large4
513 C sub/normal4
513 C sub/normal4
514 C sub2/large6
514 C sub2/large6
515 C sub2/large7
515 C sub2/large7
516 $ hg remove normal
516 $ hg remove normal
517 $ hg addremove --traceback
517 $ hg addremove --traceback
518 $ hg ci -m "addremoved normal"
518 $ hg ci -m "addremoved normal"
519 Invoking status precommit hook
519 Invoking status precommit hook
520 R normal
520 R normal
521 Invoking status postcommit hook
521 Invoking status postcommit hook
522 C large
522 C large
523 C normal3
523 C normal3
524 C sub/large4
524 C sub/large4
525 C sub/normal4
525 C sub/normal4
526 C sub2/large6
526 C sub2/large6
527 C sub2/large7
527 C sub2/large7
528 $ hg up -C '.^'
528 $ hg up -C '.^'
529 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
529 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
530 getting changed largefiles
530 getting changed largefiles
531 0 largefiles updated, 0 removed
531 0 largefiles updated, 0 removed
532 $ hg remove large
532 $ hg remove large
533 $ hg addremove --traceback
533 $ hg addremove --traceback
534 $ hg ci -m "removed large"
534 $ hg ci -m "removed large"
535 Invoking status precommit hook
535 Invoking status precommit hook
536 R large
536 R large
537 created new head
537 created new head
538 Invoking status postcommit hook
538 Invoking status postcommit hook
539 C normal
539 C normal
540 C normal3
540 C normal3
541 C sub/large4
541 C sub/large4
542 C sub/normal4
542 C sub/normal4
543 C sub2/large6
543 C sub2/large6
544 C sub2/large7
544 C sub2/large7
545
545
546 Test that a standin can't be added as a large file
546 Test that a standin can't be added as a large file
547
547
548 $ touch large
548 $ touch large
549 $ hg add --large large
549 $ hg add --large large
550 $ hg ci -m "add"
550 $ hg ci -m "add"
551 Invoking status precommit hook
551 Invoking status precommit hook
552 A large
552 A large
553 Invoking status postcommit hook
553 Invoking status postcommit hook
554 C large
554 C large
555 C normal
555 C normal
556 C normal3
556 C normal3
557 C sub/large4
557 C sub/large4
558 C sub/normal4
558 C sub/normal4
559 C sub2/large6
559 C sub2/large6
560 C sub2/large7
560 C sub2/large7
561 $ hg remove large
561 $ hg remove large
562 $ touch large
562 $ touch large
563 $ hg addremove --config largefiles.patterns=**large --traceback
563 $ hg addremove --config largefiles.patterns=**large --traceback
564 adding large as a largefile
564 adding large as a largefile
565
565
566 Test that outgoing --large works (with revsets too)
566 Test that outgoing --large works (with revsets too)
567 $ hg outgoing --rev '.^' --large
567 $ hg outgoing --rev '.^' --large
568 comparing with $TESTTMP/a (glob)
568 comparing with $TESTTMP/a (glob)
569 searching for changes
569 searching for changes
570 changeset: 8:c02fd3b77ec4
570 changeset: 8:c02fd3b77ec4
571 user: test
571 user: test
572 date: Thu Jan 01 00:00:00 1970 +0000
572 date: Thu Jan 01 00:00:00 1970 +0000
573 summary: add foo
573 summary: add foo
574
574
575 changeset: 9:289dd08c9bbb
575 changeset: 9:289dd08c9bbb
576 user: test
576 user: test
577 date: Thu Jan 01 00:00:00 1970 +0000
577 date: Thu Jan 01 00:00:00 1970 +0000
578 summary: used to say nothing changed
578 summary: used to say nothing changed
579
579
580 changeset: 10:34f23ac6ac12
580 changeset: 10:34f23ac6ac12
581 user: test
581 user: test
582 date: Thu Jan 01 00:00:00 1970 +0000
582 date: Thu Jan 01 00:00:00 1970 +0000
583 summary: added
583 summary: added
584
584
585 changeset: 12:710c1b2f523c
585 changeset: 12:710c1b2f523c
586 parent: 10:34f23ac6ac12
586 parent: 10:34f23ac6ac12
587 user: test
587 user: test
588 date: Thu Jan 01 00:00:00 1970 +0000
588 date: Thu Jan 01 00:00:00 1970 +0000
589 summary: removed large
589 summary: removed large
590
590
591 searching for changes
591 searching for changes
592 largefiles to upload:
592 largefiles to upload:
593 large
593 large
594 foo
594 foo
595
595
596 $ cd ../a
596 $ cd ../a
597
597
598 Clone a largefiles repo.
598 Clone a largefiles repo.
599
599
600 $ hg clone . ../b
600 $ hg clone . ../b
601 updating to branch default
601 updating to branch default
602 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
602 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
603 getting changed largefiles
603 getting changed largefiles
604 3 largefiles updated, 0 removed
604 3 largefiles updated, 0 removed
605 $ cd ../b
605 $ cd ../b
606 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
606 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
607 7:daea875e9014 add/edit more largefiles
607 7:daea875e9014 add/edit more largefiles
608 6:4355d653f84f edit files yet again
608 6:4355d653f84f edit files yet again
609 5:9d5af5072dbd edit files again
609 5:9d5af5072dbd edit files again
610 4:74c02385b94c move files
610 4:74c02385b94c move files
611 3:9e8fbc4bce62 copy files
611 3:9e8fbc4bce62 copy files
612 2:51a0ae4d5864 remove files
612 2:51a0ae4d5864 remove files
613 1:ce8896473775 edit files
613 1:ce8896473775 edit files
614 0:30d30fe6a5be add files
614 0:30d30fe6a5be add files
615 $ cat normal3
615 $ cat normal3
616 normal33
616 normal33
617 $ cat sub/normal4
617 $ cat sub/normal4
618 normal44
618 normal44
619 $ cat sub/large4
619 $ cat sub/large4
620 large44
620 large44
621 $ cat sub2/large6
621 $ cat sub2/large6
622 large6
622 large6
623 $ cat sub2/large7
623 $ cat sub2/large7
624 large7
624 large7
625 $ cd ..
625 $ cd ..
626 $ hg clone a -r 3 c
626 $ hg clone a -r 3 c
627 adding changesets
627 adding changesets
628 adding manifests
628 adding manifests
629 adding file changes
629 adding file changes
630 added 4 changesets with 10 changes to 4 files
630 added 4 changesets with 10 changes to 4 files
631 updating to branch default
631 updating to branch default
632 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
632 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
633 getting changed largefiles
633 getting changed largefiles
634 2 largefiles updated, 0 removed
634 2 largefiles updated, 0 removed
635 $ cd c
635 $ cd c
636 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
636 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
637 3:9e8fbc4bce62 copy files
637 3:9e8fbc4bce62 copy files
638 2:51a0ae4d5864 remove files
638 2:51a0ae4d5864 remove files
639 1:ce8896473775 edit files
639 1:ce8896473775 edit files
640 0:30d30fe6a5be add files
640 0:30d30fe6a5be add files
641 $ cat normal1
641 $ cat normal1
642 normal22
642 normal22
643 $ cat large1
643 $ cat large1
644 large22
644 large22
645 $ cat sub/normal2
645 $ cat sub/normal2
646 normal22
646 normal22
647 $ cat sub/large2
647 $ cat sub/large2
648 large22
648 large22
649
649
650 Old revisions of a clone have correct largefiles content (this also
650 Old revisions of a clone have correct largefiles content (this also
651 tests update).
651 tests update).
652
652
653 $ hg update -r 1
653 $ hg update -r 1
654 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
654 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
655 getting changed largefiles
655 getting changed largefiles
656 1 largefiles updated, 0 removed
656 1 largefiles updated, 0 removed
657 $ cat large1
657 $ cat large1
658 large11
658 large11
659 $ cat sub/large2
659 $ cat sub/large2
660 large22
660 large22
661 $ cd ..
661 $ cd ..
662
662
663 Test cloning with --all-largefiles flag
663 Test cloning with --all-largefiles flag
664
664
665 $ rm "${USERCACHE}"/*
665 $ rm "${USERCACHE}"/*
666 $ hg clone --all-largefiles a a-backup
666 $ hg clone --all-largefiles a a-backup
667 updating to branch default
667 updating to branch default
668 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
668 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
669 getting changed largefiles
669 getting changed largefiles
670 3 largefiles updated, 0 removed
670 3 largefiles updated, 0 removed
671 8 additional largefiles cached
671 8 additional largefiles cached
672
672
673 $ hg clone --all-largefiles a ssh://localhost/a
673 $ hg clone --all-largefiles a ssh://localhost/a
674 abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
674 abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
675 [255]
675 [255]
676
676
677 Test pulling with --all-largefiles flag
677 Test pulling with --all-largefiles flag
678
678
679 $ rm -Rf a-backup
679 $ rm -Rf a-backup
680 $ hg clone -r 1 a a-backup
680 $ hg clone -r 1 a a-backup
681 adding changesets
681 adding changesets
682 adding manifests
682 adding manifests
683 adding file changes
683 adding file changes
684 added 2 changesets with 8 changes to 4 files
684 added 2 changesets with 8 changes to 4 files
685 updating to branch default
685 updating to branch default
686 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
686 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
687 getting changed largefiles
687 getting changed largefiles
688 2 largefiles updated, 0 removed
688 2 largefiles updated, 0 removed
689 $ rm "${USERCACHE}"/*
689 $ rm "${USERCACHE}"/*
690 $ cd a-backup
690 $ cd a-backup
691 $ hg pull --all-largefiles
691 $ hg pull --all-largefiles
692 pulling from $TESTTMP/a (glob)
692 pulling from $TESTTMP/a (glob)
693 searching for changes
693 searching for changes
694 adding changesets
694 adding changesets
695 adding manifests
695 adding manifests
696 adding file changes
696 adding file changes
697 added 6 changesets with 16 changes to 8 files
697 added 6 changesets with 16 changes to 8 files
698 (run 'hg update' to get a working copy)
698 (run 'hg update' to get a working copy)
699 caching new largefiles
699 caching new largefiles
700 3 largefiles cached
700 3 largefiles cached
701 3 additional largefiles cached
701 3 additional largefiles cached
702 $ cd ..
702 $ cd ..
703
703
704 Rebasing between two repositories does not revert largefiles to old
704 Rebasing between two repositories does not revert largefiles to old
705 revisions (this was a very bad bug that took a lot of work to fix).
705 revisions (this was a very bad bug that took a lot of work to fix).
706
706
707 $ hg clone a d
707 $ hg clone a d
708 updating to branch default
708 updating to branch default
709 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
709 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
710 getting changed largefiles
710 getting changed largefiles
711 3 largefiles updated, 0 removed
711 3 largefiles updated, 0 removed
712 $ cd b
712 $ cd b
713 $ echo large4-modified > sub/large4
713 $ echo large4-modified > sub/large4
714 $ echo normal3-modified > normal3
714 $ echo normal3-modified > normal3
715 $ hg commit -m "modify normal file and largefile in repo b"
715 $ hg commit -m "modify normal file and largefile in repo b"
716 Invoking status precommit hook
716 Invoking status precommit hook
717 M normal3
717 M normal3
718 M sub/large4
718 M sub/large4
719 $ cd ../d
719 $ cd ../d
720 $ echo large6-modified > sub2/large6
720 $ echo large6-modified > sub2/large6
721 $ echo normal4-modified > sub/normal4
721 $ echo normal4-modified > sub/normal4
722 $ hg commit -m "modify normal file largefile in repo d"
722 $ hg commit -m "modify normal file largefile in repo d"
723 Invoking status precommit hook
723 Invoking status precommit hook
724 M sub/normal4
724 M sub/normal4
725 M sub2/large6
725 M sub2/large6
726 $ cd ..
726 $ cd ..
727 $ hg clone d e
727 $ hg clone d e
728 updating to branch default
728 updating to branch default
729 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
729 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
730 getting changed largefiles
730 getting changed largefiles
731 3 largefiles updated, 0 removed
731 3 largefiles updated, 0 removed
732 $ cd d
732 $ cd d
733 $ hg pull --rebase ../b
733 $ hg pull --rebase ../b
734 pulling from ../b
734 pulling from ../b
735 searching for changes
735 searching for changes
736 adding changesets
736 adding changesets
737 adding manifests
737 adding manifests
738 adding file changes
738 adding file changes
739 added 1 changesets with 2 changes to 2 files (+1 heads)
739 added 1 changesets with 2 changes to 2 files (+1 heads)
740 Invoking status precommit hook
740 Invoking status precommit hook
741 M sub/normal4
741 M sub/normal4
742 M sub2/large6
742 M sub2/large6
743 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
743 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
744 nothing to rebase
744 nothing to rebase
745 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
745 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
746 9:598410d3eb9a modify normal file largefile in repo d
746 9:598410d3eb9a modify normal file largefile in repo d
747 8:a381d2c8c80e modify normal file and largefile in repo b
747 8:a381d2c8c80e modify normal file and largefile in repo b
748 7:daea875e9014 add/edit more largefiles
748 7:daea875e9014 add/edit more largefiles
749 6:4355d653f84f edit files yet again
749 6:4355d653f84f edit files yet again
750 5:9d5af5072dbd edit files again
750 5:9d5af5072dbd edit files again
751 4:74c02385b94c move files
751 4:74c02385b94c move files
752 3:9e8fbc4bce62 copy files
752 3:9e8fbc4bce62 copy files
753 2:51a0ae4d5864 remove files
753 2:51a0ae4d5864 remove files
754 1:ce8896473775 edit files
754 1:ce8896473775 edit files
755 0:30d30fe6a5be add files
755 0:30d30fe6a5be add files
756 $ cat normal3
756 $ cat normal3
757 normal3-modified
757 normal3-modified
758 $ cat sub/normal4
758 $ cat sub/normal4
759 normal4-modified
759 normal4-modified
760 $ cat sub/large4
760 $ cat sub/large4
761 large4-modified
761 large4-modified
762 $ cat sub2/large6
762 $ cat sub2/large6
763 large6-modified
763 large6-modified
764 $ cat sub2/large7
764 $ cat sub2/large7
765 large7
765 large7
766 $ cd ../e
766 $ cd ../e
767 $ hg pull ../b
767 $ hg pull ../b
768 pulling from ../b
768 pulling from ../b
769 searching for changes
769 searching for changes
770 adding changesets
770 adding changesets
771 adding manifests
771 adding manifests
772 adding file changes
772 adding file changes
773 added 1 changesets with 2 changes to 2 files (+1 heads)
773 added 1 changesets with 2 changes to 2 files (+1 heads)
774 (run 'hg heads' to see heads, 'hg merge' to merge)
774 (run 'hg heads' to see heads, 'hg merge' to merge)
775 caching new largefiles
775 caching new largefiles
776 0 largefiles cached
776 0 largefiles cached
777 $ hg rebase
777 $ hg rebase
778 Invoking status precommit hook
778 Invoking status precommit hook
779 M sub/normal4
779 M sub/normal4
780 M sub2/large6
780 M sub2/large6
781 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
781 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
782 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
782 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
783 9:598410d3eb9a modify normal file largefile in repo d
783 9:598410d3eb9a modify normal file largefile in repo d
784 8:a381d2c8c80e modify normal file and largefile in repo b
784 8:a381d2c8c80e modify normal file and largefile in repo b
785 7:daea875e9014 add/edit more largefiles
785 7:daea875e9014 add/edit more largefiles
786 6:4355d653f84f edit files yet again
786 6:4355d653f84f edit files yet again
787 5:9d5af5072dbd edit files again
787 5:9d5af5072dbd edit files again
788 4:74c02385b94c move files
788 4:74c02385b94c move files
789 3:9e8fbc4bce62 copy files
789 3:9e8fbc4bce62 copy files
790 2:51a0ae4d5864 remove files
790 2:51a0ae4d5864 remove files
791 1:ce8896473775 edit files
791 1:ce8896473775 edit files
792 0:30d30fe6a5be add files
792 0:30d30fe6a5be add files
793 $ cat normal3
793 $ cat normal3
794 normal3-modified
794 normal3-modified
795 $ cat sub/normal4
795 $ cat sub/normal4
796 normal4-modified
796 normal4-modified
797 $ cat sub/large4
797 $ cat sub/large4
798 large4-modified
798 large4-modified
799 $ cat sub2/large6
799 $ cat sub2/large6
800 large6-modified
800 large6-modified
801 $ cat sub2/large7
801 $ cat sub2/large7
802 large7
802 large7
803
803
804 Rollback on largefiles.
804 Rollback on largefiles.
805
805
806 $ echo large4-modified-again > sub/large4
806 $ echo large4-modified-again > sub/large4
807 $ hg commit -m "Modify large4 again"
807 $ hg commit -m "Modify large4 again"
808 Invoking status precommit hook
808 Invoking status precommit hook
809 M sub/large4
809 M sub/large4
810 $ hg rollback
810 $ hg rollback
811 repository tip rolled back to revision 9 (undo commit)
811 repository tip rolled back to revision 9 (undo commit)
812 working directory now based on revision 9
812 working directory now based on revision 9
813 $ hg st
813 $ hg st
814 M sub/large4
814 M sub/large4
815 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
815 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
816 9:598410d3eb9a modify normal file largefile in repo d
816 9:598410d3eb9a modify normal file largefile in repo d
817 8:a381d2c8c80e modify normal file and largefile in repo b
817 8:a381d2c8c80e modify normal file and largefile in repo b
818 7:daea875e9014 add/edit more largefiles
818 7:daea875e9014 add/edit more largefiles
819 6:4355d653f84f edit files yet again
819 6:4355d653f84f edit files yet again
820 5:9d5af5072dbd edit files again
820 5:9d5af5072dbd edit files again
821 4:74c02385b94c move files
821 4:74c02385b94c move files
822 3:9e8fbc4bce62 copy files
822 3:9e8fbc4bce62 copy files
823 2:51a0ae4d5864 remove files
823 2:51a0ae4d5864 remove files
824 1:ce8896473775 edit files
824 1:ce8896473775 edit files
825 0:30d30fe6a5be add files
825 0:30d30fe6a5be add files
826 $ cat sub/large4
826 $ cat sub/large4
827 large4-modified-again
827 large4-modified-again
828
828
829 "update --check" refuses to update with uncommitted changes.
829 "update --check" refuses to update with uncommitted changes.
830 $ hg update --check 8
830 $ hg update --check 8
831 abort: uncommitted local changes
831 abort: uncommitted local changes
832 [255]
832 [255]
833
833
834 "update --clean" leaves correct largefiles in working copy.
834 "update --clean" leaves correct largefiles in working copy.
835
835
836 $ hg update --clean
836 $ hg update --clean
837 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
837 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
838 getting changed largefiles
838 getting changed largefiles
839 1 largefiles updated, 0 removed
839 1 largefiles updated, 0 removed
840 $ cat normal3
840 $ cat normal3
841 normal3-modified
841 normal3-modified
842 $ cat sub/normal4
842 $ cat sub/normal4
843 normal4-modified
843 normal4-modified
844 $ cat sub/large4
844 $ cat sub/large4
845 large4-modified
845 large4-modified
846 $ cat sub2/large6
846 $ cat sub2/large6
847 large6-modified
847 large6-modified
848 $ cat sub2/large7
848 $ cat sub2/large7
849 large7
849 large7
850
850
851 Now "update check" is happy.
851 Now "update check" is happy.
852 $ hg update --check 8
852 $ hg update --check 8
853 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
853 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
854 getting changed largefiles
854 getting changed largefiles
855 1 largefiles updated, 0 removed
855 1 largefiles updated, 0 removed
856 $ hg update --check
856 $ hg update --check
857 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
857 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
858 getting changed largefiles
858 getting changed largefiles
859 1 largefiles updated, 0 removed
859 1 largefiles updated, 0 removed
860
860
861 Test removing empty largefiles directories on update
861 Test removing empty largefiles directories on update
862 $ test -d sub2 && echo "sub2 exists"
862 $ test -d sub2 && echo "sub2 exists"
863 sub2 exists
863 sub2 exists
864 $ hg update -q null
864 $ hg update -q null
865 $ test -d sub2 && echo "error: sub2 should not exist anymore"
865 $ test -d sub2 && echo "error: sub2 should not exist anymore"
866 [1]
866 [1]
867 $ hg update -q
867 $ hg update -q
868
868
869 Test hg remove removes empty largefiles directories
869 Test hg remove removes empty largefiles directories
870 $ test -d sub2 && echo "sub2 exists"
870 $ test -d sub2 && echo "sub2 exists"
871 sub2 exists
871 sub2 exists
872 $ hg remove sub2/*
872 $ hg remove sub2/*
873 $ test -d sub2 && echo "error: sub2 should not exist anymore"
873 $ test -d sub2 && echo "error: sub2 should not exist anymore"
874 [1]
874 [1]
875 $ hg revert sub2/large6 sub2/large7
875 $ hg revert sub2/large6 sub2/large7
876
876
877 "revert" works on largefiles (and normal files too).
877 "revert" works on largefiles (and normal files too).
878 $ echo hack3 >> normal3
878 $ echo hack3 >> normal3
879 $ echo hack4 >> sub/normal4
879 $ echo hack4 >> sub/normal4
880 $ echo hack4 >> sub/large4
880 $ echo hack4 >> sub/large4
881 $ rm sub2/large6
881 $ rm sub2/large6
882 $ hg revert sub2/large6
882 $ hg revert sub2/large6
883 $ hg rm sub2/large6
883 $ hg rm sub2/large6
884 $ echo new >> sub2/large8
884 $ echo new >> sub2/large8
885 $ hg add --large sub2/large8
885 $ hg add --large sub2/large8
886 # XXX we don't really want to report that we're reverting the standin;
886 # XXX we don't really want to report that we're reverting the standin;
887 # that's just an implementation detail. But I don't see an obvious fix. ;-(
887 # that's just an implementation detail. But I don't see an obvious fix. ;-(
888 $ hg revert sub
888 $ hg revert sub
889 reverting .hglf/sub/large4 (glob)
889 reverting .hglf/sub/large4 (glob)
890 reverting sub/normal4 (glob)
890 reverting sub/normal4 (glob)
891 $ hg status
891 $ hg status
892 M normal3
892 M normal3
893 A sub2/large8
893 A sub2/large8
894 R sub2/large6
894 R sub2/large6
895 ? sub/large4.orig
895 ? sub/large4.orig
896 ? sub/normal4.orig
896 ? sub/normal4.orig
897 $ cat sub/normal4
897 $ cat sub/normal4
898 normal4-modified
898 normal4-modified
899 $ cat sub/large4
899 $ cat sub/large4
900 large4-modified
900 large4-modified
901 $ hg revert -a --no-backup
901 $ hg revert -a --no-backup
902 undeleting .hglf/sub2/large6 (glob)
902 undeleting .hglf/sub2/large6 (glob)
903 forgetting .hglf/sub2/large8 (glob)
903 forgetting .hglf/sub2/large8 (glob)
904 reverting normal3
904 reverting normal3
905 $ hg status
905 $ hg status
906 ? sub/large4.orig
906 ? sub/large4.orig
907 ? sub/normal4.orig
907 ? sub/normal4.orig
908 ? sub2/large8
908 ? sub2/large8
909 $ cat normal3
909 $ cat normal3
910 normal3-modified
910 normal3-modified
911 $ cat sub2/large6
911 $ cat sub2/large6
912 large6-modified
912 large6-modified
913 $ rm sub/*.orig sub2/large8
913 $ rm sub/*.orig sub2/large8
914
914
915 revert some files to an older revision
915 revert some files to an older revision
916 $ hg revert --no-backup -r 8 sub2
916 $ hg revert --no-backup -r 8 sub2
917 reverting .hglf/sub2/large6 (glob)
917 reverting .hglf/sub2/large6 (glob)
918 $ cat sub2/large6
918 $ cat sub2/large6
919 large6
919 large6
920 $ hg revert --no-backup -C -r '.^' sub2
920 $ hg revert --no-backup -C -r '.^' sub2
921 reverting .hglf/sub2/large6 (glob)
921 reverting .hglf/sub2/large6 (glob)
922 $ hg revert --no-backup sub2
922 $ hg revert --no-backup sub2
923 reverting .hglf/sub2/large6 (glob)
923 reverting .hglf/sub2/large6 (glob)
924 $ hg status
924 $ hg status
925
925
926 "verify --large" actually verifies largefiles
926 "verify --large" actually verifies largefiles
927
927
928 $ hg verify --large
928 $ hg verify --large
929 checking changesets
929 checking changesets
930 checking manifests
930 checking manifests
931 crosschecking files in changesets and manifests
931 crosschecking files in changesets and manifests
932 checking files
932 checking files
933 10 files, 10 changesets, 28 total revisions
933 10 files, 10 changesets, 28 total revisions
934 searching 1 changesets for largefiles
934 searching 1 changesets for largefiles
935 verified existence of 3 revisions of 3 largefiles
935 verified existence of 3 revisions of 3 largefiles
936
936
937 Merging does not revert to old versions of largefiles and also check
937 Merging does not revert to old versions of largefiles and also check
938 that merging after having pulled from a non-default remote works
938 that merging after having pulled from a non-default remote works
939 correctly.
939 correctly.
940
940
941 $ cd ..
941 $ cd ..
942 $ hg clone -r 7 e temp
942 $ hg clone -r 7 e temp
943 adding changesets
943 adding changesets
944 adding manifests
944 adding manifests
945 adding file changes
945 adding file changes
946 added 8 changesets with 24 changes to 10 files
946 added 8 changesets with 24 changes to 10 files
947 updating to branch default
947 updating to branch default
948 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
948 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
949 getting changed largefiles
949 getting changed largefiles
950 3 largefiles updated, 0 removed
950 3 largefiles updated, 0 removed
951 $ hg clone temp f
951 $ hg clone temp f
952 updating to branch default
952 updating to branch default
953 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
953 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
954 getting changed largefiles
954 getting changed largefiles
955 3 largefiles updated, 0 removed
955 3 largefiles updated, 0 removed
956 # Delete the largefiles in the largefiles system cache so that we have an
956 # Delete the largefiles in the largefiles system cache so that we have an
957 # opportunity to test that caching after a pull works.
957 # opportunity to test that caching after a pull works.
958 $ rm "${USERCACHE}"/*
958 $ rm "${USERCACHE}"/*
959 $ cd f
959 $ cd f
960 $ echo "large4-merge-test" > sub/large4
960 $ echo "large4-merge-test" > sub/large4
961 $ hg commit -m "Modify large4 to test merge"
961 $ hg commit -m "Modify large4 to test merge"
962 Invoking status precommit hook
962 Invoking status precommit hook
963 M sub/large4
963 M sub/large4
964 $ hg pull ../e
964 $ hg pull ../e
965 pulling from ../e
965 pulling from ../e
966 searching for changes
966 searching for changes
967 adding changesets
967 adding changesets
968 adding manifests
968 adding manifests
969 adding file changes
969 adding file changes
970 added 2 changesets with 4 changes to 4 files (+1 heads)
970 added 2 changesets with 4 changes to 4 files (+1 heads)
971 (run 'hg heads' to see heads, 'hg merge' to merge)
971 (run 'hg heads' to see heads, 'hg merge' to merge)
972 caching new largefiles
972 caching new largefiles
973 2 largefiles cached
973 2 largefiles cached
974 $ hg merge
974 $ hg merge
975 merging sub/large4
975 merging sub/large4
976 largefile sub/large4 has a merge conflict
976 largefile sub/large4 has a merge conflict
977 keep (l)ocal or take (o)ther? l
977 keep (l)ocal or take (o)ther? l
978 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
978 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
979 (branch merge, don't forget to commit)
979 (branch merge, don't forget to commit)
980 getting changed largefiles
980 getting changed largefiles
981 1 largefiles updated, 0 removed
981 1 largefiles updated, 0 removed
982 $ hg commit -m "Merge repos e and f"
982 $ hg commit -m "Merge repos e and f"
983 Invoking status precommit hook
983 Invoking status precommit hook
984 M normal3
984 M normal3
985 M sub/normal4
985 M sub/normal4
986 M sub2/large6
986 M sub2/large6
987 $ cat normal3
987 $ cat normal3
988 normal3-modified
988 normal3-modified
989 $ cat sub/normal4
989 $ cat sub/normal4
990 normal4-modified
990 normal4-modified
991 $ cat sub/large4
991 $ cat sub/large4
992 large4-merge-test
992 large4-merge-test
993 $ cat sub2/large6
993 $ cat sub2/large6
994 large6-modified
994 large6-modified
995 $ cat sub2/large7
995 $ cat sub2/large7
996 large7
996 large7
997
997
998 Test status after merging with a branch that introduces a new largefile:
998 Test status after merging with a branch that introduces a new largefile:
999
999
1000 $ echo large > large
1000 $ echo large > large
1001 $ hg add --large large
1001 $ hg add --large large
1002 $ hg commit -m 'add largefile'
1002 $ hg commit -m 'add largefile'
1003 Invoking status precommit hook
1003 Invoking status precommit hook
1004 A large
1004 A large
1005 $ hg update -q ".^"
1005 $ hg update -q ".^"
1006 $ echo change >> normal3
1006 $ echo change >> normal3
1007 $ hg commit -m 'some change'
1007 $ hg commit -m 'some change'
1008 Invoking status precommit hook
1008 Invoking status precommit hook
1009 M normal3
1009 M normal3
1010 created new head
1010 created new head
1011 $ hg merge
1011 $ hg merge
1012 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1012 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1013 (branch merge, don't forget to commit)
1013 (branch merge, don't forget to commit)
1014 getting changed largefiles
1014 getting changed largefiles
1015 1 largefiles updated, 0 removed
1015 1 largefiles updated, 0 removed
1016 $ hg status
1016 $ hg status
1017 M large
1017 M large
1018
1018
1019 Test that a normal file and a largefile with the same name and path cannot
1019 Test that a normal file and a largefile with the same name and path cannot
1020 coexist.
1020 coexist.
1021
1021
1022 $ rm sub2/large7
1022 $ rm sub2/large7
1023 $ echo "largeasnormal" > sub2/large7
1023 $ echo "largeasnormal" > sub2/large7
1024 $ hg add sub2/large7
1024 $ hg add sub2/large7
1025 sub2/large7 already a largefile
1025 sub2/large7 already a largefile
1026
1026
1027 Test that transplanting a largefile change works correctly.
1027 Test that transplanting a largefile change works correctly.
1028
1028
1029 $ cd ..
1029 $ cd ..
1030 $ hg clone -r 8 d g
1030 $ hg clone -r 8 d g
1031 adding changesets
1031 adding changesets
1032 adding manifests
1032 adding manifests
1033 adding file changes
1033 adding file changes
1034 added 9 changesets with 26 changes to 10 files
1034 added 9 changesets with 26 changes to 10 files
1035 updating to branch default
1035 updating to branch default
1036 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1036 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
1037 getting changed largefiles
1037 getting changed largefiles
1038 3 largefiles updated, 0 removed
1038 3 largefiles updated, 0 removed
1039 $ cd g
1039 $ cd g
1040 $ hg transplant -s ../d 598410d3eb9a
1040 $ hg transplant -s ../d 598410d3eb9a
1041 searching for changes
1041 searching for changes
1042 searching for changes
1042 searching for changes
1043 adding changesets
1043 adding changesets
1044 adding manifests
1044 adding manifests
1045 adding file changes
1045 adding file changes
1046 added 1 changesets with 2 changes to 2 files
1046 added 1 changesets with 2 changes to 2 files
1047 getting changed largefiles
1047 getting changed largefiles
1048 1 largefiles updated, 0 removed
1048 1 largefiles updated, 0 removed
1049 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1049 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1050 9:598410d3eb9a modify normal file largefile in repo d
1050 9:598410d3eb9a modify normal file largefile in repo d
1051 8:a381d2c8c80e modify normal file and largefile in repo b
1051 8:a381d2c8c80e modify normal file and largefile in repo b
1052 7:daea875e9014 add/edit more largefiles
1052 7:daea875e9014 add/edit more largefiles
1053 6:4355d653f84f edit files yet again
1053 6:4355d653f84f edit files yet again
1054 5:9d5af5072dbd edit files again
1054 5:9d5af5072dbd edit files again
1055 4:74c02385b94c move files
1055 4:74c02385b94c move files
1056 3:9e8fbc4bce62 copy files
1056 3:9e8fbc4bce62 copy files
1057 2:51a0ae4d5864 remove files
1057 2:51a0ae4d5864 remove files
1058 1:ce8896473775 edit files
1058 1:ce8896473775 edit files
1059 0:30d30fe6a5be add files
1059 0:30d30fe6a5be add files
1060 $ cat normal3
1060 $ cat normal3
1061 normal3-modified
1061 normal3-modified
1062 $ cat sub/normal4
1062 $ cat sub/normal4
1063 normal4-modified
1063 normal4-modified
1064 $ cat sub/large4
1064 $ cat sub/large4
1065 large4-modified
1065 large4-modified
1066 $ cat sub2/large6
1066 $ cat sub2/large6
1067 large6-modified
1067 large6-modified
1068 $ cat sub2/large7
1068 $ cat sub2/large7
1069 large7
1069 large7
1070
1070
1071 Cat a largefile
1071 Cat a largefile
1072 $ hg cat normal3
1072 $ hg cat normal3
1073 normal3-modified
1073 normal3-modified
1074 $ hg cat sub/large4
1074 $ hg cat sub/large4
1075 large4-modified
1075 large4-modified
1076 $ rm "${USERCACHE}"/*
1076 $ rm "${USERCACHE}"/*
1077 $ hg cat -r a381d2c8c80e -o cat.out sub/large4
1077 $ hg cat -r a381d2c8c80e -o cat.out sub/large4
1078 $ cat cat.out
1078 $ cat cat.out
1079 large4-modified
1079 large4-modified
1080 $ rm cat.out
1080 $ rm cat.out
1081 $ hg cat -r a381d2c8c80e normal3
1081 $ hg cat -r a381d2c8c80e normal3
1082 normal3-modified
1082 normal3-modified
1083 $ hg cat -r '.^' normal3
1083 $ hg cat -r '.^' normal3
1084 normal3-modified
1084 normal3-modified
1085 $ hg cat -r '.^' sub/large4
1085 $ hg cat -r '.^' sub/large4
1086 large4-modified
1086 large4-modified
1087
1087
1088 Test that renaming a largefile results in correct output for status
1088 Test that renaming a largefile results in correct output for status
1089
1089
1090 $ hg rename sub/large4 large4-renamed
1090 $ hg rename sub/large4 large4-renamed
1091 $ hg commit -m "test rename output"
1091 $ hg commit -m "test rename output"
1092 Invoking status precommit hook
1092 Invoking status precommit hook
1093 A large4-renamed
1093 A large4-renamed
1094 R sub/large4
1094 R sub/large4
1095 $ cat large4-renamed
1095 $ cat large4-renamed
1096 large4-modified
1096 large4-modified
1097 $ cd sub2
1097 $ cd sub2
1098 $ hg rename large6 large6-renamed
1098 $ hg rename large6 large6-renamed
1099 $ hg st
1099 $ hg st
1100 A sub2/large6-renamed
1100 A sub2/large6-renamed
1101 R sub2/large6
1101 R sub2/large6
1102 $ cd ..
1102 $ cd ..
1103
1103
1104 Test --normal flag
1104 Test --normal flag
1105
1105
1106 $ dd if=/dev/zero bs=2k count=11k > new-largefile 2> /dev/null
1106 $ dd if=/dev/zero bs=2k count=11k > new-largefile 2> /dev/null
1107 $ hg add --normal --large new-largefile
1107 $ hg add --normal --large new-largefile
1108 abort: --normal cannot be used with --large
1108 abort: --normal cannot be used with --large
1109 [255]
1109 [255]
1110 $ hg add --normal new-largefile
1110 $ hg add --normal new-largefile
1111 new-largefile: up to 69 MB of RAM may be required to manage this file
1111 new-largefile: up to 69 MB of RAM may be required to manage this file
1112 (use 'hg revert new-largefile' to cancel the pending addition)
1112 (use 'hg revert new-largefile' to cancel the pending addition)
1113 $ cd ..
1113 $ cd ..
1114
1114
1115 #if serve
1115 #if serve
1116 vanilla clients not locked out from largefiles servers on vanilla repos
1116 vanilla clients not locked out from largefiles servers on vanilla repos
1117 $ mkdir r1
1117 $ mkdir r1
1118 $ cd r1
1118 $ cd r1
1119 $ hg init
1119 $ hg init
1120 $ echo c1 > f1
1120 $ echo c1 > f1
1121 $ hg add f1
1121 $ hg add f1
1122 $ hg commit -m "m1"
1122 $ hg commit -m "m1"
1123 Invoking status precommit hook
1123 Invoking status precommit hook
1124 A f1
1124 A f1
1125 $ cd ..
1125 $ cd ..
1126 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
1126 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
1127 $ cat hg.pid >> $DAEMON_PIDS
1127 $ cat hg.pid >> $DAEMON_PIDS
1128 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
1128 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
1129 requesting all changes
1129 requesting all changes
1130 adding changesets
1130 adding changesets
1131 adding manifests
1131 adding manifests
1132 adding file changes
1132 adding file changes
1133 added 1 changesets with 1 changes to 1 files
1133 added 1 changesets with 1 changes to 1 files
1134 updating to branch default
1134 updating to branch default
1135 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1135 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1136
1136
1137 largefiles clients still work with vanilla servers
1137 largefiles clients still work with vanilla servers
1138 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
1138 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
1139 $ cat hg.pid >> $DAEMON_PIDS
1139 $ cat hg.pid >> $DAEMON_PIDS
1140 $ hg clone http://localhost:$HGPORT1 r3
1140 $ hg clone http://localhost:$HGPORT1 r3
1141 requesting all changes
1141 requesting all changes
1142 adding changesets
1142 adding changesets
1143 adding manifests
1143 adding manifests
1144 adding file changes
1144 adding file changes
1145 added 1 changesets with 1 changes to 1 files
1145 added 1 changesets with 1 changes to 1 files
1146 updating to branch default
1146 updating to branch default
1147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1148 #endif
1148 #endif
1149
1149
1150
1150
1151 vanilla clients locked out from largefiles http repos
1151 vanilla clients locked out from largefiles http repos
1152 $ mkdir r4
1152 $ mkdir r4
1153 $ cd r4
1153 $ cd r4
1154 $ hg init
1154 $ hg init
1155 $ echo c1 > f1
1155 $ echo c1 > f1
1156 $ hg add --large f1
1156 $ hg add --large f1
1157 $ hg commit -m "m1"
1157 $ hg commit -m "m1"
1158 Invoking status precommit hook
1158 Invoking status precommit hook
1159 A f1
1159 A f1
1160 $ cd ..
1160 $ cd ..
1161
1161
1162 largefiles can be pushed locally (issue3583)
1162 largefiles can be pushed locally (issue3583)
1163 $ hg init dest
1163 $ hg init dest
1164 $ cd r4
1164 $ cd r4
1165 $ hg outgoing ../dest
1165 $ hg outgoing ../dest
1166 comparing with ../dest
1166 comparing with ../dest
1167 searching for changes
1167 searching for changes
1168 changeset: 0:639881c12b4c
1168 changeset: 0:639881c12b4c
1169 tag: tip
1169 tag: tip
1170 user: test
1170 user: test
1171 date: Thu Jan 01 00:00:00 1970 +0000
1171 date: Thu Jan 01 00:00:00 1970 +0000
1172 summary: m1
1172 summary: m1
1173
1173
1174 $ hg push ../dest
1174 $ hg push ../dest
1175 pushing to ../dest
1175 pushing to ../dest
1176 searching for changes
1176 searching for changes
1177 searching for changes
1177 searching for changes
1178 adding changesets
1178 adding changesets
1179 adding manifests
1179 adding manifests
1180 adding file changes
1180 adding file changes
1181 added 1 changesets with 1 changes to 1 files
1181 added 1 changesets with 1 changes to 1 files
1182
1182
1183 exit code with nothing outgoing (issue3611)
1183 exit code with nothing outgoing (issue3611)
1184 $ hg outgoing ../dest
1184 $ hg outgoing ../dest
1185 comparing with ../dest
1185 comparing with ../dest
1186 searching for changes
1186 searching for changes
1187 no changes found
1187 no changes found
1188 [1]
1188 [1]
1189 $ cd ..
1189 $ cd ..
1190
1190
1191 #if serve
1191 #if serve
1192 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
1192 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
1193 $ cat hg.pid >> $DAEMON_PIDS
1193 $ cat hg.pid >> $DAEMON_PIDS
1194 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
1194 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
1195 abort: remote error:
1195 abort: remote error:
1196
1196
1197 This repository uses the largefiles extension.
1197 This repository uses the largefiles extension.
1198
1198
1199 Please enable it in your Mercurial config file.
1199 Please enable it in your Mercurial config file.
1200 [255]
1200 [255]
1201
1201
1202 used all HGPORTs, kill all daemons
1202 used all HGPORTs, kill all daemons
1203 $ "$TESTDIR/killdaemons.py"
1203 $ "$TESTDIR/killdaemons.py"
1204 #endif
1204 #endif
1205
1205
1206 vanilla clients locked out from largefiles ssh repos
1206 vanilla clients locked out from largefiles ssh repos
1207 $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5
1207 $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5
1208 abort: remote error:
1208 abort: remote error:
1209
1209
1210 This repository uses the largefiles extension.
1210 This repository uses the largefiles extension.
1211
1211
1212 Please enable it in your Mercurial config file.
1212 Please enable it in your Mercurial config file.
1213 [255]
1213 [255]
1214
1214
1215 #if serve
1215 #if serve
1216
1216
1217 largefiles clients refuse to push largefiles repos to vanilla servers
1217 largefiles clients refuse to push largefiles repos to vanilla servers
1218 $ mkdir r6
1218 $ mkdir r6
1219 $ cd r6
1219 $ cd r6
1220 $ hg init
1220 $ hg init
1221 $ echo c1 > f1
1221 $ echo c1 > f1
1222 $ hg add f1
1222 $ hg add f1
1223 $ hg commit -m "m1"
1223 $ hg commit -m "m1"
1224 Invoking status precommit hook
1224 Invoking status precommit hook
1225 A f1
1225 A f1
1226 $ cat >> .hg/hgrc <<!
1226 $ cat >> .hg/hgrc <<!
1227 > [web]
1227 > [web]
1228 > push_ssl = false
1228 > push_ssl = false
1229 > allow_push = *
1229 > allow_push = *
1230 > !
1230 > !
1231 $ cd ..
1231 $ cd ..
1232 $ hg clone r6 r7
1232 $ hg clone r6 r7
1233 updating to branch default
1233 updating to branch default
1234 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1234 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1235 $ cd r7
1235 $ cd r7
1236 $ echo c2 > f2
1236 $ echo c2 > f2
1237 $ hg add --large f2
1237 $ hg add --large f2
1238 $ hg commit -m "m2"
1238 $ hg commit -m "m2"
1239 Invoking status precommit hook
1239 Invoking status precommit hook
1240 A f2
1240 A f2
1241 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
1241 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
1242 $ cat ../hg.pid >> $DAEMON_PIDS
1242 $ cat ../hg.pid >> $DAEMON_PIDS
1243 $ hg push http://localhost:$HGPORT
1243 $ hg push http://localhost:$HGPORT
1244 pushing to http://localhost:$HGPORT/
1244 pushing to http://localhost:$HGPORT/
1245 searching for changes
1245 searching for changes
1246 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
1246 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
1247 [255]
1247 [255]
1248 $ cd ..
1248 $ cd ..
1249
1249
1250 putlfile errors are shown (issue3123)
1250 putlfile errors are shown (issue3123)
1251 Corrupt the cached largefile in r7 and in the usercache (required for testing on vfat)
1251 Corrupt the cached largefile in r7 and in the usercache (required for testing on vfat)
1252 $ echo corruption > "$TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8"
1252 $ echo corruption > "$TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8"
1253 $ echo corruption > "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
1253 $ echo corruption > "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
1254 $ hg init empty
1254 $ hg init empty
1255 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
1255 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
1256 > --config 'web.allow_push=*' --config web.push_ssl=False
1256 > --config 'web.allow_push=*' --config web.push_ssl=False
1257 $ cat hg.pid >> $DAEMON_PIDS
1257 $ cat hg.pid >> $DAEMON_PIDS
1258 $ hg push -R r7 http://localhost:$HGPORT1
1258 $ hg push -R r7 http://localhost:$HGPORT1
1259 pushing to http://localhost:$HGPORT1/
1259 pushing to http://localhost:$HGPORT1/
1260 searching for changes
1260 searching for changes
1261 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
1261 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
1262 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
1262 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
1263 [255]
1263 [255]
1264 $ rm -rf empty
1264 $ rm -rf empty
1265
1265
1266 Push a largefiles repository to a served empty repository
1266 Push a largefiles repository to a served empty repository
1267 $ hg init r8
1267 $ hg init r8
1268 $ echo c3 > r8/f1
1268 $ echo c3 > r8/f1
1269 $ hg add --large r8/f1 -R r8
1269 $ hg add --large r8/f1 -R r8
1270 $ hg commit -m "m1" -R r8
1270 $ hg commit -m "m1" -R r8
1271 Invoking status precommit hook
1271 Invoking status precommit hook
1272 A f1
1272 A f1
1273 $ hg init empty
1273 $ hg init empty
1274 $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
1274 $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
1275 > --config 'web.allow_push=*' --config web.push_ssl=False
1275 > --config 'web.allow_push=*' --config web.push_ssl=False
1276 $ cat hg.pid >> $DAEMON_PIDS
1276 $ cat hg.pid >> $DAEMON_PIDS
1277 $ rm "${USERCACHE}"/*
1277 $ rm "${USERCACHE}"/*
1278 $ hg push -R r8 http://localhost:$HGPORT2
1278 $ hg push -R r8 http://localhost:$HGPORT2
1279 pushing to http://localhost:$HGPORT2/
1279 pushing to http://localhost:$HGPORT2/
1280 searching for changes
1280 searching for changes
1281 searching for changes
1281 searching for changes
1282 remote: adding changesets
1282 remote: adding changesets
1283 remote: adding manifests
1283 remote: adding manifests
1284 remote: adding file changes
1284 remote: adding file changes
1285 remote: added 1 changesets with 1 changes to 1 files
1285 remote: added 1 changesets with 1 changes to 1 files
1286 $ rm -rf empty
1286 $ rm -rf empty
1287
1287
1288 used all HGPORTs, kill all daemons
1288 used all HGPORTs, kill all daemons
1289 $ "$TESTDIR/killdaemons.py"
1289 $ "$TESTDIR/killdaemons.py"
1290
1290
1291 #endif
1291 #endif
1292
1292
1293
1293
1294 #if unix-permissions
1294 #if unix-permissions
1295
1295
1296 Clone a local repository owned by another user
1296 Clone a local repository owned by another user
1297 We have to simulate that here by setting $HOME and removing write permissions
1297 We have to simulate that here by setting $HOME and removing write permissions
1298 $ ORIGHOME="$HOME"
1298 $ ORIGHOME="$HOME"
1299 $ mkdir alice
1299 $ mkdir alice
1300 $ HOME="`pwd`/alice"
1300 $ HOME="`pwd`/alice"
1301 $ cd alice
1301 $ cd alice
1302 $ hg init pubrepo
1302 $ hg init pubrepo
1303 $ cd pubrepo
1303 $ cd pubrepo
1304 $ dd if=/dev/zero bs=1k count=11k > a-large-file 2> /dev/null
1304 $ dd if=/dev/zero bs=1k count=11k > a-large-file 2> /dev/null
1305 $ hg add --large a-large-file
1305 $ hg add --large a-large-file
1306 $ hg commit -m "Add a large file"
1306 $ hg commit -m "Add a large file"
1307 Invoking status precommit hook
1307 Invoking status precommit hook
1308 A a-large-file
1308 A a-large-file
1309 $ cd ..
1309 $ cd ..
1310 $ chmod -R a-w pubrepo
1310 $ chmod -R a-w pubrepo
1311 $ cd ..
1311 $ cd ..
1312 $ mkdir bob
1312 $ mkdir bob
1313 $ HOME="`pwd`/bob"
1313 $ HOME="`pwd`/bob"
1314 $ cd bob
1314 $ cd bob
1315 $ hg clone --pull ../alice/pubrepo pubrepo
1315 $ hg clone --pull ../alice/pubrepo pubrepo
1316 requesting all changes
1316 requesting all changes
1317 adding changesets
1317 adding changesets
1318 adding manifests
1318 adding manifests
1319 adding file changes
1319 adding file changes
1320 added 1 changesets with 1 changes to 1 files
1320 added 1 changesets with 1 changes to 1 files
1321 updating to branch default
1321 updating to branch default
1322 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1322 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1323 getting changed largefiles
1323 getting changed largefiles
1324 1 largefiles updated, 0 removed
1324 1 largefiles updated, 0 removed
1325 $ cd ..
1325 $ cd ..
1326 $ chmod -R u+w alice/pubrepo
1326 $ chmod -R u+w alice/pubrepo
1327 $ HOME="$ORIGHOME"
1327 $ HOME="$ORIGHOME"
1328
1328
1329 #endif
1329 #endif
1330
1330
1331 #if symlink
1331 #if symlink
1332
1332
1333 Symlink to a large largefile should behave the same as a symlink to a normal file
1333 Symlink to a large largefile should behave the same as a symlink to a normal file
1334 $ hg init largesymlink
1334 $ hg init largesymlink
1335 $ cd largesymlink
1335 $ cd largesymlink
1336 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
1336 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
1337 $ hg add --large largefile
1337 $ hg add --large largefile
1338 $ hg commit -m "commit a large file"
1338 $ hg commit -m "commit a large file"
1339 Invoking status precommit hook
1339 Invoking status precommit hook
1340 A largefile
1340 A largefile
1341 $ ln -s largefile largelink
1341 $ ln -s largefile largelink
1342 $ hg add largelink
1342 $ hg add largelink
1343 $ hg commit -m "commit a large symlink"
1343 $ hg commit -m "commit a large symlink"
1344 Invoking status precommit hook
1344 Invoking status precommit hook
1345 A largelink
1345 A largelink
1346 $ rm -f largelink
1346 $ rm -f largelink
1347 $ hg up >/dev/null
1347 $ hg up >/dev/null
1348 $ test -f largelink
1348 $ test -f largelink
1349 [1]
1349 [1]
1350 $ test -L largelink
1350 $ test -L largelink
1351 [1]
1351 [1]
1352 $ rm -f largelink # make next part of the test independent of the previous
1352 $ rm -f largelink # make next part of the test independent of the previous
1353 $ hg up -C >/dev/null
1353 $ hg up -C >/dev/null
1354 $ test -f largelink
1354 $ test -f largelink
1355 $ test -L largelink
1355 $ test -L largelink
1356 $ cd ..
1356 $ cd ..
1357
1357
1358 #endif
1358 #endif
1359
1359
1360 test for pattern matching on 'hg status':
1360 test for pattern matching on 'hg status':
1361 to boost performance, largefiles checks whether specified patterns are
1361 to boost performance, largefiles checks whether specified patterns are
1362 related to largefiles in working directory (NOT to STANDIN) or not.
1362 related to largefiles in working directory (NOT to STANDIN) or not.
1363
1363
1364 $ hg init statusmatch
1364 $ hg init statusmatch
1365 $ cd statusmatch
1365 $ cd statusmatch
1366
1366
1367 $ mkdir -p a/b/c/d
1367 $ mkdir -p a/b/c/d
1368 $ echo normal > a/b/c/d/e.normal.txt
1368 $ echo normal > a/b/c/d/e.normal.txt
1369 $ hg add a/b/c/d/e.normal.txt
1369 $ hg add a/b/c/d/e.normal.txt
1370 $ echo large > a/b/c/d/e.large.txt
1370 $ echo large > a/b/c/d/e.large.txt
1371 $ hg add --large a/b/c/d/e.large.txt
1371 $ hg add --large a/b/c/d/e.large.txt
1372 $ mkdir -p a/b/c/x
1372 $ mkdir -p a/b/c/x
1373 $ echo normal > a/b/c/x/y.normal.txt
1373 $ echo normal > a/b/c/x/y.normal.txt
1374 $ hg add a/b/c/x/y.normal.txt
1374 $ hg add a/b/c/x/y.normal.txt
1375 $ hg commit -m 'add files'
1375 $ hg commit -m 'add files'
1376 Invoking status precommit hook
1376 Invoking status precommit hook
1377 A a/b/c/d/e.large.txt
1377 A a/b/c/d/e.large.txt
1378 A a/b/c/d/e.normal.txt
1378 A a/b/c/d/e.normal.txt
1379 A a/b/c/x/y.normal.txt
1379 A a/b/c/x/y.normal.txt
1380
1380
1381 (1) no pattern: no performance boost
1381 (1) no pattern: no performance boost
1382 $ hg status -A
1382 $ hg status -A
1383 C a/b/c/d/e.large.txt
1383 C a/b/c/d/e.large.txt
1384 C a/b/c/d/e.normal.txt
1384 C a/b/c/d/e.normal.txt
1385 C a/b/c/x/y.normal.txt
1385 C a/b/c/x/y.normal.txt
1386
1386
1387 (2) pattern not related to largefiles: performance boost
1387 (2) pattern not related to largefiles: performance boost
1388 $ hg status -A a/b/c/x
1388 $ hg status -A a/b/c/x
1389 C a/b/c/x/y.normal.txt
1389 C a/b/c/x/y.normal.txt
1390
1390
1391 (3) pattern related to largefiles: no performance boost
1391 (3) pattern related to largefiles: no performance boost
1392 $ hg status -A a/b/c/d
1392 $ hg status -A a/b/c/d
1393 C a/b/c/d/e.large.txt
1393 C a/b/c/d/e.large.txt
1394 C a/b/c/d/e.normal.txt
1394 C a/b/c/d/e.normal.txt
1395
1395
1396 (4) pattern related to STANDIN (not to largefiles): performance boost
1396 (4) pattern related to STANDIN (not to largefiles): performance boost
1397 $ hg status -A .hglf/a
1397 $ hg status -A .hglf/a
1398 C .hglf/a/b/c/d/e.large.txt
1398 C .hglf/a/b/c/d/e.large.txt
1399
1399
1400 (5) mixed case: no performance boost
1400 (5) mixed case: no performance boost
1401 $ hg status -A a/b/c/x a/b/c/d
1401 $ hg status -A a/b/c/x a/b/c/d
1402 C a/b/c/d/e.large.txt
1402 C a/b/c/d/e.large.txt
1403 C a/b/c/d/e.normal.txt
1403 C a/b/c/d/e.normal.txt
1404 C a/b/c/x/y.normal.txt
1404 C a/b/c/x/y.normal.txt
1405
1405
1406 verify that largefiles doesn't break filesets
1406 verify that largefiles doesn't break filesets
1407
1407
1408 $ hg log --rev . --exclude "set:binary()"
1408 $ hg log --rev . --exclude "set:binary()"
1409 changeset: 0:41bd42f10efa
1409 changeset: 0:41bd42f10efa
1410 tag: tip
1410 tag: tip
1411 user: test
1411 user: test
1412 date: Thu Jan 01 00:00:00 1970 +0000
1412 date: Thu Jan 01 00:00:00 1970 +0000
1413 summary: add files
1413 summary: add files
1414
1414
1415 verify that large files in subrepos handled properly
1415 verify that large files in subrepos handled properly
1416 $ hg init subrepo
1416 $ hg init subrepo
1417 $ echo "subrepo = subrepo" > .hgsub
1417 $ echo "subrepo = subrepo" > .hgsub
1418 $ hg add .hgsub
1418 $ hg add .hgsub
1419 $ hg ci -m "add subrepo"
1419 $ hg ci -m "add subrepo"
1420 Invoking status precommit hook
1420 Invoking status precommit hook
1421 A .hgsub
1421 A .hgsub
1422 ? .hgsubstate
1422 ? .hgsubstate
1423 $ echo "rev 1" > subrepo/large.txt
1423 $ echo "rev 1" > subrepo/large.txt
1424 $ hg -R subrepo add --large subrepo/large.txt
1424 $ hg -R subrepo add --large subrepo/large.txt
1425 $ hg sum
1425 $ hg sum
1426 parent: 1:8ee150ea2e9c tip
1426 parent: 1:8ee150ea2e9c tip
1427 add subrepo
1427 add subrepo
1428 branch: default
1428 branch: default
1429 commit: 1 subrepos
1429 commit: 1 subrepos
1430 update: (current)
1430 update: (current)
1431 $ hg st
1431 $ hg st
1432 $ hg st -S
1432 $ hg st -S
1433 A subrepo/large.txt
1433 A subrepo/large.txt
1434 $ hg ci -S -m "commit top repo"
1434 $ hg ci -S -m "commit top repo"
1435 committing subrepository subrepo
1435 committing subrepository subrepo
1436 Invoking status precommit hook
1436 Invoking status precommit hook
1437 A large.txt
1437 A large.txt
1438 Invoking status precommit hook
1438 Invoking status precommit hook
1439 M .hgsubstate
1439 M .hgsubstate
1440 # No differences
1440 # No differences
1441 $ hg st -S
1441 $ hg st -S
1442 $ hg sum
1442 $ hg sum
1443 parent: 2:ce4cd0c527a6 tip
1443 parent: 2:ce4cd0c527a6 tip
1444 commit top repo
1444 commit top repo
1445 branch: default
1445 branch: default
1446 commit: (clean)
1446 commit: (clean)
1447 update: (current)
1447 update: (current)
1448 $ echo "rev 2" > subrepo/large.txt
1448 $ echo "rev 2" > subrepo/large.txt
1449 $ hg st -S
1449 $ hg st -S
1450 M subrepo/large.txt
1450 M subrepo/large.txt
1451 $ hg sum
1451 $ hg sum
1452 parent: 2:ce4cd0c527a6 tip
1452 parent: 2:ce4cd0c527a6 tip
1453 commit top repo
1453 commit top repo
1454 branch: default
1454 branch: default
1455 commit: 1 subrepos
1455 commit: 1 subrepos
1456 update: (current)
1456 update: (current)
1457 $ hg ci -m "this commit should fail without -S"
1457 $ hg ci -m "this commit should fail without -S"
1458 abort: uncommitted changes in subrepo subrepo
1458 abort: uncommitted changes in subrepo subrepo
1459 (use --subrepos for recursive commit)
1459 (use --subrepos for recursive commit)
1460 [255]
1460 [255]
1461
1461
1462 Add a normal file to the subrepo, then test archiving
1462 Add a normal file to the subrepo, then test archiving
1463
1463
1464 $ echo 'normal file' > subrepo/normal.txt
1464 $ echo 'normal file' > subrepo/normal.txt
1465 $ hg -R subrepo add subrepo/normal.txt
1465 $ hg -R subrepo add subrepo/normal.txt
1466
1466
1467 Lock in subrepo, otherwise the change isn't archived
1467 Lock in subrepo, otherwise the change isn't archived
1468
1468
1469 $ hg ci -S -m "add normal file to top level"
1469 $ hg ci -S -m "add normal file to top level"
1470 committing subrepository subrepo
1470 committing subrepository subrepo
1471 Invoking status precommit hook
1471 Invoking status precommit hook
1472 M large.txt
1472 M large.txt
1473 A normal.txt
1473 A normal.txt
1474 Invoking status precommit hook
1474 Invoking status precommit hook
1475 M .hgsubstate
1475 M .hgsubstate
1476 $ hg archive -S lf_subrepo_archive
1476 $ hg archive -S lf_subrepo_archive
1477 $ find lf_subrepo_archive | sort
1477 $ find lf_subrepo_archive | sort
1478 lf_subrepo_archive
1478 lf_subrepo_archive
1479 lf_subrepo_archive/.hg_archival.txt
1479 lf_subrepo_archive/.hg_archival.txt
1480 lf_subrepo_archive/.hgsub
1480 lf_subrepo_archive/.hgsub
1481 lf_subrepo_archive/.hgsubstate
1481 lf_subrepo_archive/.hgsubstate
1482 lf_subrepo_archive/a
1482 lf_subrepo_archive/a
1483 lf_subrepo_archive/a/b
1483 lf_subrepo_archive/a/b
1484 lf_subrepo_archive/a/b/c
1484 lf_subrepo_archive/a/b/c
1485 lf_subrepo_archive/a/b/c/d
1485 lf_subrepo_archive/a/b/c/d
1486 lf_subrepo_archive/a/b/c/d/e.large.txt
1486 lf_subrepo_archive/a/b/c/d/e.large.txt
1487 lf_subrepo_archive/a/b/c/d/e.normal.txt
1487 lf_subrepo_archive/a/b/c/d/e.normal.txt
1488 lf_subrepo_archive/a/b/c/x
1488 lf_subrepo_archive/a/b/c/x
1489 lf_subrepo_archive/a/b/c/x/y.normal.txt
1489 lf_subrepo_archive/a/b/c/x/y.normal.txt
1490 lf_subrepo_archive/subrepo
1490 lf_subrepo_archive/subrepo
1491 lf_subrepo_archive/subrepo/large.txt
1491 lf_subrepo_archive/subrepo/large.txt
1492 lf_subrepo_archive/subrepo/normal.txt
1492 lf_subrepo_archive/subrepo/normal.txt
1493
1493
1494 $ cd ..
1494 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now