##// END OF EJS Templates
largefiles: add precommit hook to check for inappropriate locking...
Levi Bard -
r15795:8bed8551 default
parent child Browse files
Show More
@@ -1,855 +1,915 b''
1 $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80
1 $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80
2
3 $ USERCACHE=`pwd`/cache; export USERCACHE
2 $ USERCACHE=`pwd`/cache; export USERCACHE
4 $ mkdir -p ${USERCACHE}
3 $ mkdir -p ${USERCACHE}
5 $ cat >> $HGRCPATH <<EOF
4 $ cat >> $HGRCPATH <<EOF
6 > [extensions]
5 > [extensions]
7 > largefiles=
6 > largefiles=
8 > purge=
7 > purge=
9 > rebase=
8 > rebase=
10 > transplant=
9 > transplant=
11 > [phases]
10 > [phases]
12 > publish=False
11 > publish=False
13 > [largefiles]
12 > [largefiles]
14 > minsize=2
13 > minsize=2
15 > patterns=glob:**.dat
14 > patterns=glob:**.dat
16 > usercache=${USERCACHE}
15 > usercache=${USERCACHE}
16 > [hooks]
17 > precommit=echo "Invoking status precommit hook"; hg status
17 > EOF
18 > EOF
18
19
19 Create the repo with a couple of revisions of both large and normal
20 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
21 files, testing that status correctly shows largefiles and that summary output
21 is correct.
22 is correct.
22
23
23 $ hg init a
24 $ hg init a
24 $ cd a
25 $ cd a
25 $ mkdir sub
26 $ mkdir sub
26 $ echo normal1 > normal1
27 $ echo normal1 > normal1
27 $ echo normal2 > sub/normal2
28 $ echo normal2 > sub/normal2
28 $ echo large1 > large1
29 $ echo large1 > large1
29 $ echo large2 > sub/large2
30 $ echo large2 > sub/large2
30 $ hg add normal1 sub/normal2
31 $ hg add normal1 sub/normal2
31 $ hg add --large large1 sub/large2
32 $ hg add --large large1 sub/large2
32 $ hg commit -m "add files"
33 $ hg commit -m "add files"
34 Invoking status precommit hook
35 A large1
36 A normal1
37 A sub/large2
38 A sub/normal2
33 $ echo normal11 > normal1
39 $ echo normal11 > normal1
34 $ echo normal22 > sub/normal2
40 $ echo normal22 > sub/normal2
35 $ echo large11 > large1
41 $ echo large11 > large1
36 $ echo large22 > sub/large2
42 $ echo large22 > sub/large2
37 $ hg st
43 $ hg commit -m "edit files"
44 Invoking status precommit hook
38 M large1
45 M large1
39 M normal1
46 M normal1
40 M sub/large2
47 M sub/large2
41 M sub/normal2
48 M sub/normal2
42 $ hg sum
43 parent: 0:30d30fe6a5be tip
44 add files
45 branch: default
46 commit: 4 modified
47 update: (current)
48 $ hg commit -m "edit files"
49 $ hg sum --large
49 $ hg sum --large
50 parent: 1:ce8896473775 tip
50 parent: 1:ce8896473775 tip
51 edit files
51 edit files
52 branch: default
52 branch: default
53 commit: (clean)
53 commit: (clean)
54 update: (current)
54 update: (current)
55 largefiles: No remote repo
55 largefiles: No remote repo
56
56
57 Commit preserved largefile contents.
57 Commit preserved largefile contents.
58
58
59 $ cat normal1
59 $ cat normal1
60 normal11
60 normal11
61 $ cat large1
61 $ cat large1
62 large11
62 large11
63 $ cat sub/normal2
63 $ cat sub/normal2
64 normal22
64 normal22
65 $ cat sub/large2
65 $ cat sub/large2
66 large22
66 large22
67
67
68 Remove both largefiles and normal files.
68 Remove both largefiles and normal files.
69
69
70 $ hg remove normal1 large1
70 $ hg remove normal1 large1
71 $ hg commit -m "remove files"
71 $ hg commit -m "remove files"
72 Invoking status precommit hook
73 R large1
74 R normal1
72 $ ls
75 $ ls
73 sub
76 sub
74 $ echo "testlargefile" > large1-test
77 $ echo "testlargefile" > large1-test
75 $ hg add --large large1-test
78 $ hg add --large large1-test
76 $ hg st
79 $ hg st
77 A large1-test
80 A large1-test
78 $ hg rm large1-test
81 $ hg rm large1-test
79 not removing large1-test: file has been marked for add (use forget to undo)
82 not removing large1-test: file has been marked for add (use forget to undo)
80 $ hg st
83 $ hg st
81 A large1-test
84 A large1-test
82 $ hg forget large1-test
85 $ hg forget large1-test
83 $ hg st
86 $ hg st
84 ? large1-test
87 ? large1-test
85 $ rm large1-test
88 $ rm large1-test
86
89
87 Copy both largefiles and normal files (testing that status output is correct).
90 Copy both largefiles and normal files (testing that status output is correct).
88
91
89 $ hg cp sub/normal2 normal1
92 $ hg cp sub/normal2 normal1
90 $ hg cp sub/large2 large1
93 $ hg cp sub/large2 large1
91 $ hg st
94 $ hg commit -m "copy files"
95 Invoking status precommit hook
92 A large1
96 A large1
93 A normal1
97 A normal1
94 $ hg commit -m "copy files"
95 $ cat normal1
98 $ cat normal1
96 normal22
99 normal22
97 $ cat large1
100 $ cat large1
98 large22
101 large22
99
102
100 Test moving largefiles and verify that normal files are also unaffected.
103 Test moving largefiles and verify that normal files are also unaffected.
101
104
102 $ hg mv normal1 normal3
105 $ hg mv normal1 normal3
103 $ hg mv large1 large3
106 $ hg mv large1 large3
104 $ hg mv sub/normal2 sub/normal4
107 $ hg mv sub/normal2 sub/normal4
105 $ hg mv sub/large2 sub/large4
108 $ hg mv sub/large2 sub/large4
106 $ hg commit -m "move files"
109 $ hg commit -m "move files"
110 Invoking status precommit hook
111 A large3
112 A normal3
113 A sub/large4
114 A sub/normal4
115 R large1
116 R normal1
117 R sub/large2
118 R sub/normal2
107 $ cat normal3
119 $ cat normal3
108 normal22
120 normal22
109 $ cat large3
121 $ cat large3
110 large22
122 large22
111 $ cat sub/normal4
123 $ cat sub/normal4
112 normal22
124 normal22
113 $ cat sub/large4
125 $ cat sub/large4
114 large22
126 large22
115
127
116 Test archiving the various revisions. These hit corner cases known with
128 Test archiving the various revisions. These hit corner cases known with
117 archiving.
129 archiving.
118
130
119 $ hg archive -r 0 ../archive0
131 $ hg archive -r 0 ../archive0
120 $ hg archive -r 1 ../archive1
132 $ hg archive -r 1 ../archive1
121 $ hg archive -r 2 ../archive2
133 $ hg archive -r 2 ../archive2
122 $ hg archive -r 3 ../archive3
134 $ hg archive -r 3 ../archive3
123 $ hg archive -r 4 ../archive4
135 $ hg archive -r 4 ../archive4
124 $ cd ../archive0
136 $ cd ../archive0
125 $ cat normal1
137 $ cat normal1
126 normal1
138 normal1
127 $ cat large1
139 $ cat large1
128 large1
140 large1
129 $ cat sub/normal2
141 $ cat sub/normal2
130 normal2
142 normal2
131 $ cat sub/large2
143 $ cat sub/large2
132 large2
144 large2
133 $ cd ../archive1
145 $ cd ../archive1
134 $ cat normal1
146 $ cat normal1
135 normal11
147 normal11
136 $ cat large1
148 $ cat large1
137 large11
149 large11
138 $ cat sub/normal2
150 $ cat sub/normal2
139 normal22
151 normal22
140 $ cat sub/large2
152 $ cat sub/large2
141 large22
153 large22
142 $ cd ../archive2
154 $ cd ../archive2
143 $ ls
155 $ ls
144 sub
156 sub
145 $ cat sub/normal2
157 $ cat sub/normal2
146 normal22
158 normal22
147 $ cat sub/large2
159 $ cat sub/large2
148 large22
160 large22
149 $ cd ../archive3
161 $ cd ../archive3
150 $ cat normal1
162 $ cat normal1
151 normal22
163 normal22
152 $ cat large1
164 $ cat large1
153 large22
165 large22
154 $ cat sub/normal2
166 $ cat sub/normal2
155 normal22
167 normal22
156 $ cat sub/large2
168 $ cat sub/large2
157 large22
169 large22
158 $ cd ../archive4
170 $ cd ../archive4
159 $ cat normal3
171 $ cat normal3
160 normal22
172 normal22
161 $ cat large3
173 $ cat large3
162 large22
174 large22
163 $ cat sub/normal4
175 $ cat sub/normal4
164 normal22
176 normal22
165 $ cat sub/large4
177 $ cat sub/large4
166 large22
178 large22
167
179
168 Commit corner case: specify files to commit.
180 Commit corner case: specify files to commit.
169
181
170 $ cd ../a
182 $ cd ../a
171 $ echo normal3 > normal3
183 $ echo normal3 > normal3
172 $ echo large3 > large3
184 $ echo large3 > large3
173 $ echo normal4 > sub/normal4
185 $ echo normal4 > sub/normal4
174 $ echo large4 > sub/large4
186 $ echo large4 > sub/large4
175 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
187 $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
188 Invoking status precommit hook
189 M large3
190 M normal3
191 M sub/large4
192 M sub/normal4
176 $ cat normal3
193 $ cat normal3
177 normal3
194 normal3
178 $ cat large3
195 $ cat large3
179 large3
196 large3
180 $ cat sub/normal4
197 $ cat sub/normal4
181 normal4
198 normal4
182 $ cat sub/large4
199 $ cat sub/large4
183 large4
200 large4
184
201
185 One more commit corner case: commit from a subdirectory.
202 One more commit corner case: commit from a subdirectory.
186
203
187 $ cd ../a
204 $ cd ../a
188 $ echo normal33 > normal3
205 $ echo normal33 > normal3
189 $ echo large33 > large3
206 $ echo large33 > large3
190 $ echo normal44 > sub/normal4
207 $ echo normal44 > sub/normal4
191 $ echo large44 > sub/large4
208 $ echo large44 > sub/large4
192 $ cd sub
209 $ cd sub
193 $ hg commit -m "edit files yet again"
210 $ hg commit -m "edit files yet again"
211 Invoking status precommit hook
212 M large3
213 M normal3
214 M sub/large4
215 M sub/normal4
194 $ cat ../normal3
216 $ cat ../normal3
195 normal33
217 normal33
196 $ cat ../large3
218 $ cat ../large3
197 large33
219 large33
198 $ cat normal4
220 $ cat normal4
199 normal44
221 normal44
200 $ cat large4
222 $ cat large4
201 large44
223 large44
202
224
203 Committing standins is not allowed.
225 Committing standins is not allowed.
204
226
205 $ cd ..
227 $ cd ..
206 $ echo large3 > large3
228 $ echo large3 > large3
207 $ hg commit .hglf/large3 -m "try to commit standin"
229 $ hg commit .hglf/large3 -m "try to commit standin"
208 abort: file ".hglf/large3" is a largefile standin
230 abort: file ".hglf/large3" is a largefile standin
209 (commit the largefile itself instead)
231 (commit the largefile itself instead)
210 [255]
232 [255]
211
233
212 Corner cases for adding largefiles.
234 Corner cases for adding largefiles.
213
235
214 $ echo large5 > large5
236 $ echo large5 > large5
215 $ hg add --large large5
237 $ hg add --large large5
216 $ hg add --large large5
238 $ hg add --large large5
217 large5 already a largefile
239 large5 already a largefile
218 $ mkdir sub2
240 $ mkdir sub2
219 $ echo large6 > sub2/large6
241 $ echo large6 > sub2/large6
220 $ echo large7 > sub2/large7
242 $ echo large7 > sub2/large7
221 $ hg add --large sub2
243 $ hg add --large sub2
222 adding sub2/large6 as a largefile (glob)
244 adding sub2/large6 as a largefile (glob)
223 adding sub2/large7 as a largefile (glob)
245 adding sub2/large7 as a largefile (glob)
224 $ hg st
246 $ hg st
225 M large3
247 M large3
226 A large5
248 A large5
227 A sub2/large6
249 A sub2/large6
228 A sub2/large7
250 A sub2/large7
229
251
230 Config settings (pattern **.dat, minsize 2 MB) are respected.
252 Config settings (pattern **.dat, minsize 2 MB) are respected.
231
253
232 $ echo testdata > test.dat
254 $ echo testdata > test.dat
233 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
255 $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
234 $ hg add
256 $ hg add
235 adding reallylarge as a largefile
257 adding reallylarge as a largefile
236 adding test.dat as a largefile
258 adding test.dat as a largefile
237
259
238 Test that minsize and --lfsize handle float values;
260 Test that minsize and --lfsize handle float values;
239 also tests that --lfsize overrides largefiles.minsize.
261 also tests that --lfsize overrides largefiles.minsize.
240 (0.250 MB = 256 kB = 262144 B)
262 (0.250 MB = 256 kB = 262144 B)
241
263
242 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
264 $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null
243 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
265 $ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null
244 $ hg --config largefiles.minsize=.25 add
266 $ hg --config largefiles.minsize=.25 add
245 adding ratherlarge as a largefile
267 adding ratherlarge as a largefile
246 adding medium
268 adding medium
247 $ hg forget medium
269 $ hg forget medium
248 $ hg --config largefiles.minsize=.25 add --lfsize=.125
270 $ hg --config largefiles.minsize=.25 add --lfsize=.125
249 adding medium as a largefile
271 adding medium as a largefile
250 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
272 $ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null
251 $ hg --config largefiles.minsize=.25 add --lfsize=.125
273 $ hg --config largefiles.minsize=.25 add --lfsize=.125
252 adding notlarge
274 adding notlarge
253 $ hg forget notlarge
275 $ hg forget notlarge
254
276
255 Test forget on largefiles.
277 Test forget on largefiles.
256
278
257 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
279 $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
258 $ hg st
280 $ hg commit -m "add/edit more largefiles"
281 Invoking status precommit hook
259 A sub2/large6
282 A sub2/large6
260 A sub2/large7
283 A sub2/large7
261 R large3
284 R large3
262 ? large5
285 ? large5
263 ? medium
286 ? medium
264 ? notlarge
287 ? notlarge
265 ? ratherlarge
288 ? ratherlarge
266 ? reallylarge
289 ? reallylarge
267 ? test.dat
290 ? test.dat
268 $ hg commit -m "add/edit more largefiles"
269 $ hg st
291 $ hg st
270 ? large3
292 ? large3
271 ? large5
293 ? large5
272 ? medium
294 ? medium
273 ? notlarge
295 ? notlarge
274 ? ratherlarge
296 ? ratherlarge
275 ? reallylarge
297 ? reallylarge
276 ? test.dat
298 ? test.dat
277
299
278 Purge with largefiles: verify that largefiles are still in the working
300 Purge with largefiles: verify that largefiles are still in the working
279 dir after a purge.
301 dir after a purge.
280
302
281 $ hg purge --all
303 $ hg purge --all
282 $ cat sub/large4
304 $ cat sub/large4
283 large44
305 large44
284 $ cat sub2/large6
306 $ cat sub2/large6
285 large6
307 large6
286 $ cat sub2/large7
308 $ cat sub2/large7
287 large7
309 large7
288
310
289 Test addremove: verify that files that should be added as largfiles are added as
311 Test addremove: verify that files that should be added as largfiles are added as
290 such and that already-existing largfiles are not added as normal files by
312 such and that already-existing largfiles are not added as normal files by
291 accident.
313 accident.
292
314
293 $ rm normal3
315 $ rm normal3
294 $ rm sub/large4
316 $ rm sub/large4
295 $ echo "testing addremove with patterns" > testaddremove.dat
317 $ echo "testing addremove with patterns" > testaddremove.dat
296 $ echo "normaladdremove" > normaladdremove
318 $ echo "normaladdremove" > normaladdremove
297 $ hg addremove
319 $ hg addremove
298 removing sub/large4
320 removing sub/large4
299 adding testaddremove.dat as a largefile
321 adding testaddremove.dat as a largefile
300 removing normal3
322 removing normal3
301 adding normaladdremove
323 adding normaladdremove
302
324
303 Clone a largefiles repo.
325 Clone a largefiles repo.
304
326
305 $ hg clone . ../b
327 $ hg clone . ../b
306 updating to branch default
328 updating to branch default
307 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
329 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
308 getting changed largefiles
330 getting changed largefiles
309 3 largefiles updated, 0 removed
331 3 largefiles updated, 0 removed
310 $ cd ../b
332 $ cd ../b
311 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
333 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
312 7:daea875e9014 add/edit more largefiles
334 7:daea875e9014 add/edit more largefiles
313 6:4355d653f84f edit files yet again
335 6:4355d653f84f edit files yet again
314 5:9d5af5072dbd edit files again
336 5:9d5af5072dbd edit files again
315 4:74c02385b94c move files
337 4:74c02385b94c move files
316 3:9e8fbc4bce62 copy files
338 3:9e8fbc4bce62 copy files
317 2:51a0ae4d5864 remove files
339 2:51a0ae4d5864 remove files
318 1:ce8896473775 edit files
340 1:ce8896473775 edit files
319 0:30d30fe6a5be add files
341 0:30d30fe6a5be add files
320 $ cat normal3
342 $ cat normal3
321 normal33
343 normal33
322 $ cat sub/normal4
344 $ cat sub/normal4
323 normal44
345 normal44
324 $ cat sub/large4
346 $ cat sub/large4
325 large44
347 large44
326 $ cat sub2/large6
348 $ cat sub2/large6
327 large6
349 large6
328 $ cat sub2/large7
350 $ cat sub2/large7
329 large7
351 large7
330 $ cd ..
352 $ cd ..
331 $ hg clone a -r 3 c
353 $ hg clone a -r 3 c
332 adding changesets
354 adding changesets
333 adding manifests
355 adding manifests
334 adding file changes
356 adding file changes
335 added 4 changesets with 10 changes to 4 files
357 added 4 changesets with 10 changes to 4 files
336 updating to branch default
358 updating to branch default
337 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
359 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
338 getting changed largefiles
360 getting changed largefiles
339 2 largefiles updated, 0 removed
361 2 largefiles updated, 0 removed
340 $ cd c
362 $ cd c
341 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
363 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
342 3:9e8fbc4bce62 copy files
364 3:9e8fbc4bce62 copy files
343 2:51a0ae4d5864 remove files
365 2:51a0ae4d5864 remove files
344 1:ce8896473775 edit files
366 1:ce8896473775 edit files
345 0:30d30fe6a5be add files
367 0:30d30fe6a5be add files
346 $ cat normal1
368 $ cat normal1
347 normal22
369 normal22
348 $ cat large1
370 $ cat large1
349 large22
371 large22
350 $ cat sub/normal2
372 $ cat sub/normal2
351 normal22
373 normal22
352 $ cat sub/large2
374 $ cat sub/large2
353 large22
375 large22
354
376
355 Old revisions of a clone have correct largefiles content (this also
377 Old revisions of a clone have correct largefiles content (this also
356 tests update).
378 tests update).
357
379
358 $ hg update -r 1
380 $ hg update -r 1
359 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
381 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
360 getting changed largefiles
382 getting changed largefiles
361 1 largefiles updated, 0 removed
383 1 largefiles updated, 0 removed
362 $ cat large1
384 $ cat large1
363 large11
385 large11
364 $ cat sub/large2
386 $ cat sub/large2
365 large22
387 large22
366
388
367 Rebasing between two repositories does not revert largefiles to old
389 Rebasing between two repositories does not revert largefiles to old
368 revisions (this was a very bad bug that took a lot of work to fix).
390 revisions (this was a very bad bug that took a lot of work to fix).
369
391
370 $ cd ..
392 $ cd ..
371 $ hg clone a d
393 $ hg clone a d
372 updating to branch default
394 updating to branch default
373 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
395 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
374 getting changed largefiles
396 getting changed largefiles
375 3 largefiles updated, 0 removed
397 3 largefiles updated, 0 removed
376 $ cd b
398 $ cd b
377 $ echo large4-modified > sub/large4
399 $ echo large4-modified > sub/large4
378 $ echo normal3-modified > normal3
400 $ echo normal3-modified > normal3
379 $ hg commit -m "modify normal file and largefile in repo b"
401 $ hg commit -m "modify normal file and largefile in repo b"
402 Invoking status precommit hook
403 M normal3
404 M sub/large4
380 $ cd ../d
405 $ cd ../d
381 $ echo large6-modified > sub2/large6
406 $ echo large6-modified > sub2/large6
382 $ echo normal4-modified > sub/normal4
407 $ echo normal4-modified > sub/normal4
383 $ hg commit -m "modify normal file largefile in repo d"
408 $ hg commit -m "modify normal file largefile in repo d"
409 Invoking status precommit hook
410 M sub/normal4
411 M sub2/large6
384 $ cd ..
412 $ cd ..
385 $ hg clone d e
413 $ hg clone d e
386 updating to branch default
414 updating to branch default
387 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
415 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
388 getting changed largefiles
416 getting changed largefiles
389 3 largefiles updated, 0 removed
417 3 largefiles updated, 0 removed
390 $ cd d
418 $ cd d
391 $ hg pull --rebase ../b
419 $ hg pull --rebase ../b
392 pulling from ../b
420 pulling from ../b
393 searching for changes
421 searching for changes
394 adding changesets
422 adding changesets
395 adding manifests
423 adding manifests
396 adding file changes
424 adding file changes
397 added 1 changesets with 2 changes to 2 files (+1 heads)
425 added 1 changesets with 2 changes to 2 files (+1 heads)
398 getting changed largefiles
426 getting changed largefiles
399 1 largefiles updated, 0 removed
427 1 largefiles updated, 0 removed
400 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
428 Invoking status precommit hook
429 M sub/normal4
430 M sub2/large6
431 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg
401 nothing to rebase
432 nothing to rebase
402 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
433 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
403 9:598410d3eb9a modify normal file largefile in repo d
434 9:598410d3eb9a modify normal file largefile in repo d
404 8:a381d2c8c80e modify normal file and largefile in repo b
435 8:a381d2c8c80e modify normal file and largefile in repo b
405 7:daea875e9014 add/edit more largefiles
436 7:daea875e9014 add/edit more largefiles
406 6:4355d653f84f edit files yet again
437 6:4355d653f84f edit files yet again
407 5:9d5af5072dbd edit files again
438 5:9d5af5072dbd edit files again
408 4:74c02385b94c move files
439 4:74c02385b94c move files
409 3:9e8fbc4bce62 copy files
440 3:9e8fbc4bce62 copy files
410 2:51a0ae4d5864 remove files
441 2:51a0ae4d5864 remove files
411 1:ce8896473775 edit files
442 1:ce8896473775 edit files
412 0:30d30fe6a5be add files
443 0:30d30fe6a5be add files
413 $ cat normal3
444 $ cat normal3
414 normal3-modified
445 normal3-modified
415 $ cat sub/normal4
446 $ cat sub/normal4
416 normal4-modified
447 normal4-modified
417 $ cat sub/large4
448 $ cat sub/large4
418 large4-modified
449 large4-modified
419 $ cat sub2/large6
450 $ cat sub2/large6
420 large6-modified
451 large6-modified
421 $ cat sub2/large7
452 $ cat sub2/large7
422 large7
453 large7
423 $ cd ../e
454 $ cd ../e
424 $ hg pull ../b
455 $ hg pull ../b
425 pulling from ../b
456 pulling from ../b
426 searching for changes
457 searching for changes
427 adding changesets
458 adding changesets
428 adding manifests
459 adding manifests
429 adding file changes
460 adding file changes
430 added 1 changesets with 2 changes to 2 files (+1 heads)
461 added 1 changesets with 2 changes to 2 files (+1 heads)
431 (run 'hg heads' to see heads, 'hg merge' to merge)
462 (run 'hg heads' to see heads, 'hg merge' to merge)
432 $ hg rebase
463 $ hg rebase
433 getting changed largefiles
464 getting changed largefiles
434 1 largefiles updated, 0 removed
465 1 largefiles updated, 0 removed
435 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
466 Invoking status precommit hook
467 M sub/normal4
468 M sub2/large6
469 saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg
436 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
470 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
437 9:598410d3eb9a modify normal file largefile in repo d
471 9:598410d3eb9a modify normal file largefile in repo d
438 8:a381d2c8c80e modify normal file and largefile in repo b
472 8:a381d2c8c80e modify normal file and largefile in repo b
439 7:daea875e9014 add/edit more largefiles
473 7:daea875e9014 add/edit more largefiles
440 6:4355d653f84f edit files yet again
474 6:4355d653f84f edit files yet again
441 5:9d5af5072dbd edit files again
475 5:9d5af5072dbd edit files again
442 4:74c02385b94c move files
476 4:74c02385b94c move files
443 3:9e8fbc4bce62 copy files
477 3:9e8fbc4bce62 copy files
444 2:51a0ae4d5864 remove files
478 2:51a0ae4d5864 remove files
445 1:ce8896473775 edit files
479 1:ce8896473775 edit files
446 0:30d30fe6a5be add files
480 0:30d30fe6a5be add files
447 $ cat normal3
481 $ cat normal3
448 normal3-modified
482 normal3-modified
449 $ cat sub/normal4
483 $ cat sub/normal4
450 normal4-modified
484 normal4-modified
451 $ cat sub/large4
485 $ cat sub/large4
452 large4-modified
486 large4-modified
453 $ cat sub2/large6
487 $ cat sub2/large6
454 large6-modified
488 large6-modified
455 $ cat sub2/large7
489 $ cat sub2/large7
456 large7
490 large7
457
491
458 Rollback on largefiles.
492 Rollback on largefiles.
459
493
460 $ echo large4-modified-again > sub/large4
494 $ echo large4-modified-again > sub/large4
461 $ hg commit -m "Modify large4 again"
495 $ hg commit -m "Modify large4 again"
496 Invoking status precommit hook
497 M sub/large4
462 $ hg rollback
498 $ hg rollback
463 repository tip rolled back to revision 9 (undo commit)
499 repository tip rolled back to revision 9 (undo commit)
464 working directory now based on revision 9
500 working directory now based on revision 9
465 $ hg st
501 $ hg st
466 M sub/large4
502 M sub/large4
467 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
503 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
468 9:598410d3eb9a modify normal file largefile in repo d
504 9:598410d3eb9a modify normal file largefile in repo d
469 8:a381d2c8c80e modify normal file and largefile in repo b
505 8:a381d2c8c80e modify normal file and largefile in repo b
470 7:daea875e9014 add/edit more largefiles
506 7:daea875e9014 add/edit more largefiles
471 6:4355d653f84f edit files yet again
507 6:4355d653f84f edit files yet again
472 5:9d5af5072dbd edit files again
508 5:9d5af5072dbd edit files again
473 4:74c02385b94c move files
509 4:74c02385b94c move files
474 3:9e8fbc4bce62 copy files
510 3:9e8fbc4bce62 copy files
475 2:51a0ae4d5864 remove files
511 2:51a0ae4d5864 remove files
476 1:ce8896473775 edit files
512 1:ce8896473775 edit files
477 0:30d30fe6a5be add files
513 0:30d30fe6a5be add files
478 $ cat sub/large4
514 $ cat sub/large4
479 large4-modified-again
515 large4-modified-again
480
516
481 "update --check" refuses to update with uncommitted changes.
517 "update --check" refuses to update with uncommitted changes.
482 $ hg update --check 8
518 $ hg update --check 8
483 abort: uncommitted local changes
519 abort: uncommitted local changes
484 [255]
520 [255]
485
521
486 "update --clean" leaves correct largefiles in working copy.
522 "update --clean" leaves correct largefiles in working copy.
487
523
488 $ hg update --clean
524 $ hg update --clean
489 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
525 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
490 getting changed largefiles
526 getting changed largefiles
491 1 largefiles updated, 0 removed
527 1 largefiles updated, 0 removed
492 $ cat normal3
528 $ cat normal3
493 normal3-modified
529 normal3-modified
494 $ cat sub/normal4
530 $ cat sub/normal4
495 normal4-modified
531 normal4-modified
496 $ cat sub/large4
532 $ cat sub/large4
497 large4-modified
533 large4-modified
498 $ cat sub2/large6
534 $ cat sub2/large6
499 large6-modified
535 large6-modified
500 $ cat sub2/large7
536 $ cat sub2/large7
501 large7
537 large7
502
538
503 Now "update check" is happy.
539 Now "update check" is happy.
504 $ hg update --check 8
540 $ hg update --check 8
505 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
541 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
506 getting changed largefiles
542 getting changed largefiles
507 1 largefiles updated, 0 removed
543 1 largefiles updated, 0 removed
508 $ hg update --check
544 $ hg update --check
509 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
545 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
510 getting changed largefiles
546 getting changed largefiles
511 1 largefiles updated, 0 removed
547 1 largefiles updated, 0 removed
512
548
513 "revert" works on largefiles (and normal files too).
549 "revert" works on largefiles (and normal files too).
514 $ echo hack3 >> normal3
550 $ echo hack3 >> normal3
515 $ echo hack4 >> sub/normal4
551 $ echo hack4 >> sub/normal4
516 $ echo hack4 >> sub/large4
552 $ echo hack4 >> sub/large4
517 $ hg rm sub2/large6
553 $ hg rm sub2/large6
518 $ echo new >> sub2/large8
554 $ echo new >> sub2/large8
519 $ hg add --large sub2/large8
555 $ hg add --large sub2/large8
520 # XXX we don't really want to report that we're reverting the standin;
556 # XXX we don't really want to report that we're reverting the standin;
521 # that's just an implementation detail. But I don't see an obvious fix. ;-(
557 # that's just an implementation detail. But I don't see an obvious fix. ;-(
522 $ hg revert sub
558 $ hg revert sub
523 reverting .hglf/sub/large4 (glob)
559 reverting .hglf/sub/large4 (glob)
524 reverting sub/normal4 (glob)
560 reverting sub/normal4 (glob)
525 $ hg status
561 $ hg status
526 M normal3
562 M normal3
527 A sub2/large8
563 A sub2/large8
528 R sub2/large6
564 R sub2/large6
529 ? sub/large4.orig
565 ? sub/large4.orig
530 ? sub/normal4.orig
566 ? sub/normal4.orig
531 $ cat sub/normal4
567 $ cat sub/normal4
532 normal4-modified
568 normal4-modified
533 $ cat sub/large4
569 $ cat sub/large4
534 large4-modified
570 large4-modified
535 $ hg revert -a --no-backup
571 $ hg revert -a --no-backup
536 undeleting .hglf/sub2/large6 (glob)
572 undeleting .hglf/sub2/large6 (glob)
537 forgetting .hglf/sub2/large8 (glob)
573 forgetting .hglf/sub2/large8 (glob)
538 reverting normal3
574 reverting normal3
539 $ hg status
575 $ hg status
540 ? sub/large4.orig
576 ? sub/large4.orig
541 ? sub/normal4.orig
577 ? sub/normal4.orig
542 ? sub2/large8
578 ? sub2/large8
543 $ cat normal3
579 $ cat normal3
544 normal3-modified
580 normal3-modified
545 $ cat sub2/large6
581 $ cat sub2/large6
546 large6-modified
582 large6-modified
547 $ rm sub/*.orig sub2/large8
583 $ rm sub/*.orig sub2/large8
548
584
549 revert some files to an older revision
585 revert some files to an older revision
550 $ hg revert --no-backup -r 8 sub2
586 $ hg revert --no-backup -r 8 sub2
551 reverting .hglf/sub2/large6 (glob)
587 reverting .hglf/sub2/large6 (glob)
552 $ cat sub2/large6
588 $ cat sub2/large6
553 large6
589 large6
554 $ hg revert --no-backup sub2
590 $ hg revert --no-backup sub2
555 reverting .hglf/sub2/large6 (glob)
591 reverting .hglf/sub2/large6 (glob)
556 $ hg status
592 $ hg status
557
593
558 "verify --large" actually verifies largefiles
594 "verify --large" actually verifies largefiles
559
595
560 $ hg verify --large
596 $ hg verify --large
561 checking changesets
597 checking changesets
562 checking manifests
598 checking manifests
563 crosschecking files in changesets and manifests
599 crosschecking files in changesets and manifests
564 checking files
600 checking files
565 10 files, 10 changesets, 28 total revisions
601 10 files, 10 changesets, 28 total revisions
566 searching 1 changesets for largefiles
602 searching 1 changesets for largefiles
567 verified existence of 3 revisions of 3 largefiles
603 verified existence of 3 revisions of 3 largefiles
568
604
569 Merging does not revert to old versions of largefiles (this has also
605 Merging does not revert to old versions of largefiles (this has also
570 been very problematic).
606 been very problematic).
571
607
572 $ cd ..
608 $ cd ..
573 $ hg clone -r 7 e f
609 $ hg clone -r 7 e f
574 adding changesets
610 adding changesets
575 adding manifests
611 adding manifests
576 adding file changes
612 adding file changes
577 added 8 changesets with 24 changes to 10 files
613 added 8 changesets with 24 changes to 10 files
578 updating to branch default
614 updating to branch default
579 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
615 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
580 getting changed largefiles
616 getting changed largefiles
581 3 largefiles updated, 0 removed
617 3 largefiles updated, 0 removed
582 $ cd f
618 $ cd f
583 $ echo "large4-merge-test" > sub/large4
619 $ echo "large4-merge-test" > sub/large4
584 $ hg commit -m "Modify large4 to test merge"
620 $ hg commit -m "Modify large4 to test merge"
621 Invoking status precommit hook
622 M sub/large4
585 $ hg pull ../e
623 $ hg pull ../e
586 pulling from ../e
624 pulling from ../e
587 searching for changes
625 searching for changes
588 adding changesets
626 adding changesets
589 adding manifests
627 adding manifests
590 adding file changes
628 adding file changes
591 added 2 changesets with 4 changes to 4 files (+1 heads)
629 added 2 changesets with 4 changes to 4 files (+1 heads)
592 (run 'hg heads' to see heads, 'hg merge' to merge)
630 (run 'hg heads' to see heads, 'hg merge' to merge)
593 $ hg merge
631 $ hg merge
594 merging sub/large4
632 merging sub/large4
595 largefile sub/large4 has a merge conflict
633 largefile sub/large4 has a merge conflict
596 keep (l)ocal or take (o)ther? l
634 keep (l)ocal or take (o)ther? l
597 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
635 3 files updated, 1 files merged, 0 files removed, 0 files unresolved
598 (branch merge, don't forget to commit)
636 (branch merge, don't forget to commit)
599 getting changed largefiles
637 getting changed largefiles
600 1 largefiles updated, 0 removed
638 1 largefiles updated, 0 removed
601 $ hg commit -m "Merge repos e and f"
639 $ hg commit -m "Merge repos e and f"
640 Invoking status precommit hook
641 M normal3
642 M sub/normal4
643 M sub2/large6
602 $ cat normal3
644 $ cat normal3
603 normal3-modified
645 normal3-modified
604 $ cat sub/normal4
646 $ cat sub/normal4
605 normal4-modified
647 normal4-modified
606 $ cat sub/large4
648 $ cat sub/large4
607 large4-merge-test
649 large4-merge-test
608 $ cat sub2/large6
650 $ cat sub2/large6
609 large6-modified
651 large6-modified
610 $ cat sub2/large7
652 $ cat sub2/large7
611 large7
653 large7
612
654
613 Test status after merging with a branch that introduces a new largefile:
655 Test status after merging with a branch that introduces a new largefile:
614
656
615 $ echo large > large
657 $ echo large > large
616 $ hg add --large large
658 $ hg add --large large
617 $ hg commit -m 'add largefile'
659 $ hg commit -m 'add largefile'
660 Invoking status precommit hook
661 A large
618 $ hg update -q ".^"
662 $ hg update -q ".^"
619 $ echo change >> normal3
663 $ echo change >> normal3
620 $ hg commit -m 'some change'
664 $ hg commit -m 'some change'
665 Invoking status precommit hook
666 M normal3
621 created new head
667 created new head
622 $ hg merge
668 $ hg merge
623 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
669 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
624 (branch merge, don't forget to commit)
670 (branch merge, don't forget to commit)
625 getting changed largefiles
671 getting changed largefiles
626 1 largefiles updated, 0 removed
672 1 largefiles updated, 0 removed
627 $ hg status
673 $ hg status
628 M large
674 M large
629
675
630 Test that a normal file and a largefile with the same name and path cannot
676 Test that a normal file and a largefile with the same name and path cannot
631 coexist.
677 coexist.
632
678
633 $ rm sub2/large7
679 $ rm sub2/large7
634 $ echo "largeasnormal" > sub2/large7
680 $ echo "largeasnormal" > sub2/large7
635 $ hg add sub2/large7
681 $ hg add sub2/large7
636 sub2/large7 already a largefile
682 sub2/large7 already a largefile
637
683
638 Test that transplanting a largefile change works correctly.
684 Test that transplanting a largefile change works correctly.
639
685
640 $ cd ..
686 $ cd ..
641 $ hg clone -r 8 d g
687 $ hg clone -r 8 d g
642 adding changesets
688 adding changesets
643 adding manifests
689 adding manifests
644 adding file changes
690 adding file changes
645 added 9 changesets with 26 changes to 10 files
691 added 9 changesets with 26 changes to 10 files
646 updating to branch default
692 updating to branch default
647 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
693 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
648 getting changed largefiles
694 getting changed largefiles
649 3 largefiles updated, 0 removed
695 3 largefiles updated, 0 removed
650 $ cd g
696 $ cd g
651 $ hg transplant -s ../d 598410d3eb9a
697 $ hg transplant -s ../d 598410d3eb9a
652 searching for changes
698 searching for changes
653 searching for changes
699 searching for changes
654 adding changesets
700 adding changesets
655 adding manifests
701 adding manifests
656 adding file changes
702 adding file changes
657 added 1 changesets with 2 changes to 2 files
703 added 1 changesets with 2 changes to 2 files
658 getting changed largefiles
704 getting changed largefiles
659 1 largefiles updated, 0 removed
705 1 largefiles updated, 0 removed
660 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
706 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
661 9:598410d3eb9a modify normal file largefile in repo d
707 9:598410d3eb9a modify normal file largefile in repo d
662 8:a381d2c8c80e modify normal file and largefile in repo b
708 8:a381d2c8c80e modify normal file and largefile in repo b
663 7:daea875e9014 add/edit more largefiles
709 7:daea875e9014 add/edit more largefiles
664 6:4355d653f84f edit files yet again
710 6:4355d653f84f edit files yet again
665 5:9d5af5072dbd edit files again
711 5:9d5af5072dbd edit files again
666 4:74c02385b94c move files
712 4:74c02385b94c move files
667 3:9e8fbc4bce62 copy files
713 3:9e8fbc4bce62 copy files
668 2:51a0ae4d5864 remove files
714 2:51a0ae4d5864 remove files
669 1:ce8896473775 edit files
715 1:ce8896473775 edit files
670 0:30d30fe6a5be add files
716 0:30d30fe6a5be add files
671 $ cat normal3
717 $ cat normal3
672 normal3-modified
718 normal3-modified
673 $ cat sub/normal4
719 $ cat sub/normal4
674 normal4-modified
720 normal4-modified
675 $ cat sub/large4
721 $ cat sub/large4
676 large4-modified
722 large4-modified
677 $ cat sub2/large6
723 $ cat sub2/large6
678 large6-modified
724 large6-modified
679 $ cat sub2/large7
725 $ cat sub2/large7
680 large7
726 large7
681
727
682 Test that renaming a largefile results in correct output for status
728 Test that renaming a largefile results in correct output for status
683
729
684 $ hg rename sub/large4 large4-renamed
730 $ hg rename sub/large4 large4-renamed
685 $ hg st
731 $ hg commit -m "test rename output"
732 Invoking status precommit hook
686 A large4-renamed
733 A large4-renamed
687 R sub/large4
734 R sub/large4
688 $ hg commit -m "test rename output"
689 $ cat large4-renamed
735 $ cat large4-renamed
690 large4-modified
736 large4-modified
691 $ cd sub2
737 $ cd sub2
692 $ hg rename large6 large6-renamed
738 $ hg rename large6 large6-renamed
693 $ hg st
739 $ hg st
694 A sub2/large6-renamed
740 A sub2/large6-renamed
695 R sub2/large6
741 R sub2/large6
696 $ cd ../..
742 $ cd ../..
697
743
698 vanilla clients not locked out from largefiles servers on vanilla repos
744 vanilla clients not locked out from largefiles servers on vanilla repos
699 $ mkdir r1
745 $ mkdir r1
700 $ cd r1
746 $ cd r1
701 $ hg init
747 $ hg init
702 $ echo c1 > f1
748 $ echo c1 > f1
703 $ hg add f1
749 $ hg add f1
704 $ hg com -m "m1"
750 $ hg commit -m "m1"
751 Invoking status precommit hook
752 A f1
705 $ cd ..
753 $ cd ..
706 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
754 $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
707 $ cat hg.pid >> $DAEMON_PIDS
755 $ cat hg.pid >> $DAEMON_PIDS
708 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
756 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
709 requesting all changes
757 requesting all changes
710 adding changesets
758 adding changesets
711 adding manifests
759 adding manifests
712 adding file changes
760 adding file changes
713 added 1 changesets with 1 changes to 1 files
761 added 1 changesets with 1 changes to 1 files
714 updating to branch default
762 updating to branch default
715 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
763 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
716
764
717 largefiles clients still work with vanilla servers
765 largefiles clients still work with vanilla servers
718 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
766 $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid
719 $ cat hg.pid >> $DAEMON_PIDS
767 $ cat hg.pid >> $DAEMON_PIDS
720 $ hg clone http://localhost:$HGPORT1 r3
768 $ hg clone http://localhost:$HGPORT1 r3
721 requesting all changes
769 requesting all changes
722 adding changesets
770 adding changesets
723 adding manifests
771 adding manifests
724 adding file changes
772 adding file changes
725 added 1 changesets with 1 changes to 1 files
773 added 1 changesets with 1 changes to 1 files
726 updating to branch default
774 updating to branch default
727 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
775 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
728
776
729 vanilla clients locked out from largefiles http repos
777 vanilla clients locked out from largefiles http repos
730 $ mkdir r4
778 $ mkdir r4
731 $ cd r4
779 $ cd r4
732 $ hg init
780 $ hg init
733 $ echo c1 > f1
781 $ echo c1 > f1
734 $ hg add --large f1
782 $ hg add --large f1
735 $ hg com -m "m1"
783 $ hg commit -m "m1"
784 Invoking status precommit hook
785 A f1
736 $ cd ..
786 $ cd ..
737 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
787 $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
738 $ cat hg.pid >> $DAEMON_PIDS
788 $ cat hg.pid >> $DAEMON_PIDS
739 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
789 $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5
740 abort: remote error:
790 abort: remote error:
741
791
742 This repository uses the largefiles extension.
792 This repository uses the largefiles extension.
743
793
744 Please enable it in your Mercurial config file.
794 Please enable it in your Mercurial config file.
745 [255]
795 [255]
746
796
747 used all HGPORTs, kill all daemons
797 used all HGPORTs, kill all daemons
748 $ "$TESTDIR/killdaemons.py"
798 $ "$TESTDIR/killdaemons.py"
749
799
750 vanilla clients locked out from largefiles ssh repos
800 vanilla clients locked out from largefiles ssh repos
751 $ hg --config extensions.largefiles=! clone -e "python $TESTDIR/dummyssh" ssh://user@dummy/r4 r5
801 $ hg --config extensions.largefiles=! clone -e "python $TESTDIR/dummyssh" ssh://user@dummy/r4 r5
752 abort: remote error:
802 abort: remote error:
753
803
754 This repository uses the largefiles extension.
804 This repository uses the largefiles extension.
755
805
756 Please enable it in your Mercurial config file.
806 Please enable it in your Mercurial config file.
757 [255]
807 [255]
758
808
759 largefiles clients refuse to push largefiles repos to vanilla servers
809 largefiles clients refuse to push largefiles repos to vanilla servers
760 $ mkdir r6
810 $ mkdir r6
761 $ cd r6
811 $ cd r6
762 $ hg init
812 $ hg init
763 $ echo c1 > f1
813 $ echo c1 > f1
764 $ hg add f1
814 $ hg add f1
765 $ hg com -m "m1"
815 $ hg commit -m "m1"
816 Invoking status precommit hook
817 A f1
766 $ cat >> .hg/hgrc <<!
818 $ cat >> .hg/hgrc <<!
767 > [web]
819 > [web]
768 > push_ssl = false
820 > push_ssl = false
769 > allow_push = *
821 > allow_push = *
770 > !
822 > !
771 $ cd ..
823 $ cd ..
772 $ hg clone r6 r7
824 $ hg clone r6 r7
773 updating to branch default
825 updating to branch default
774 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
826 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
775 $ cd r7
827 $ cd r7
776 $ echo c2 > f2
828 $ echo c2 > f2
777 $ hg add --large f2
829 $ hg add --large f2
778 $ hg com -m "m2"
830 $ hg commit -m "m2"
831 Invoking status precommit hook
832 A f2
779 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
833 $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
780 $ cat ../hg.pid >> $DAEMON_PIDS
834 $ cat ../hg.pid >> $DAEMON_PIDS
781 $ hg push http://localhost:$HGPORT
835 $ hg push http://localhost:$HGPORT
782 pushing to http://localhost:$HGPORT/
836 pushing to http://localhost:$HGPORT/
783 searching for changes
837 searching for changes
784 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
838 abort: http://localhost:$HGPORT/ does not appear to be a largefile store
785 [255]
839 [255]
786 $ cd ..
840 $ cd ..
787
841
788 putlfile errors are shown (issue3123)
842 putlfile errors are shown (issue3123)
789 Corrupt the cached largefile in r7
843 Corrupt the cached largefile in r7
790 $ echo corruption > $USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8
844 $ echo corruption > $USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8
791 $ hg init empty
845 $ hg init empty
792 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
846 $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
793 > --config 'web.allow_push=*' --config web.push_ssl=False
847 > --config 'web.allow_push=*' --config web.push_ssl=False
794 $ cat hg.pid >> $DAEMON_PIDS
848 $ cat hg.pid >> $DAEMON_PIDS
795 $ hg push -R r7 http://localhost:$HGPORT1
849 $ hg push -R r7 http://localhost:$HGPORT1
796 pushing to http://localhost:$HGPORT1/
850 pushing to http://localhost:$HGPORT1/
797 searching for changes
851 searching for changes
798 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
852 remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
799 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/
853 abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/
800 [255]
854 [255]
801 $ rm -rf empty
855 $ rm -rf empty
802
856
803 Clone a local repository owned by another user
857 Clone a local repository owned by another user
804 We have to simulate that here by setting $HOME and removing write permissions
858 We have to simulate that here by setting $HOME and removing write permissions
805 $ ORIGHOME="$HOME"
859 $ ORIGHOME="$HOME"
806 $ mkdir alice
860 $ mkdir alice
807 $ HOME="`pwd`/alice"
861 $ HOME="`pwd`/alice"
808 $ cd alice
862 $ cd alice
809 $ hg init pubrepo
863 $ hg init pubrepo
810 $ cd pubrepo
864 $ cd pubrepo
811 $ dd if=/dev/urandom bs=1k count=11k > a-large-file 2> /dev/null
865 $ dd if=/dev/urandom bs=1k count=11k > a-large-file 2> /dev/null
812 $ hg add --large a-large-file
866 $ hg add --large a-large-file
813 $ hg commit -m "Add a large file"
867 $ hg commit -m "Add a large file"
868 Invoking status precommit hook
869 A a-large-file
814 $ cd ..
870 $ cd ..
815 $ chmod -R a-w pubrepo
871 $ chmod -R a-w pubrepo
816 $ cd ..
872 $ cd ..
817 $ mkdir bob
873 $ mkdir bob
818 $ HOME="`pwd`/bob"
874 $ HOME="`pwd`/bob"
819 $ cd bob
875 $ cd bob
820 $ hg clone --pull ../alice/pubrepo pubrepo
876 $ hg clone --pull ../alice/pubrepo pubrepo
821 requesting all changes
877 requesting all changes
822 adding changesets
878 adding changesets
823 adding manifests
879 adding manifests
824 adding file changes
880 adding file changes
825 added 1 changesets with 1 changes to 1 files
881 added 1 changesets with 1 changes to 1 files
826 updating to branch default
882 updating to branch default
827 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
883 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
828 getting changed largefiles
884 getting changed largefiles
829 1 largefiles updated, 0 removed
885 1 largefiles updated, 0 removed
830 $ cd ..
886 $ cd ..
831 $ chmod -R u+w alice/pubrepo
887 $ chmod -R u+w alice/pubrepo
832 $ HOME="$ORIGHOME"
888 $ HOME="$ORIGHOME"
833
889
834 Symlink to a large largefile should behave the same as a symlink to a normal file
890 Symlink to a large largefile should behave the same as a symlink to a normal file
835 $ hg init largesymlink
891 $ hg init largesymlink
836 $ cd largesymlink
892 $ cd largesymlink
837 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
893 $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
838 $ hg add --large largefile
894 $ hg add --large largefile
839 $ hg commit -m "commit a large file"
895 $ hg commit -m "commit a large file"
896 Invoking status precommit hook
897 A largefile
840 $ ln -s largefile largelink
898 $ ln -s largefile largelink
841 $ hg add largelink
899 $ hg add largelink
842 $ hg commit -m "commit a large symlink"
900 $ hg commit -m "commit a large symlink"
901 Invoking status precommit hook
902 A largelink
843 $ rm -f largelink
903 $ rm -f largelink
844 $ hg up >/dev/null
904 $ hg up >/dev/null
845 $ test -f largelink
905 $ test -f largelink
846 [1]
906 [1]
847 $ test -L largelink
907 $ test -L largelink
848 [1]
908 [1]
849 $ rm -f largelink # make next part of the test independent of the previous
909 $ rm -f largelink # make next part of the test independent of the previous
850 $ hg up -C >/dev/null
910 $ hg up -C >/dev/null
851 $ test -f largelink
911 $ test -f largelink
852 $ test -L largelink
912 $ test -L largelink
853 $ cd ..
913 $ cd ..
854
914
855
915
General Comments 0
You need to be logged in to leave comments. Login now