test-largefiles.t
951 lines
| 24.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-largefiles.t
Mads Kiilerich
|
r15446 | $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80 | ||
Kevin Gessner
|
r15778 | $ USERCACHE=`pwd`/cache; export USERCACHE | ||
$ mkdir -p ${USERCACHE} | ||||
Na'Tosha Bard
|
r15216 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> largefiles= | ||||
Na'Tosha Bard
|
r15251 | > purge= | ||
> rebase= | ||||
Na'Tosha Bard
|
r15383 | > transplant= | ||
Pierre-Yves David
|
r15742 | > [phases] | ||
> publish=False | ||||
Na'Tosha Bard
|
r15251 | > [largefiles] | ||
Greg Ward
|
r15304 | > minsize=2 | ||
Na'Tosha Bard
|
r15251 | > patterns=glob:**.dat | ||
Kevin Gessner
|
r15778 | > usercache=${USERCACHE} | ||
Levi Bard
|
r15795 | > [hooks] | ||
> precommit=echo "Invoking status precommit hook"; hg status | ||||
Na'Tosha Bard
|
r15216 | > EOF | ||
Create the repo with a couple of revisions of both large and normal | ||||
Na'Tosha Bard
|
r15787 | files, testing that status correctly shows largefiles and that summary output | ||
is correct. | ||||
Na'Tosha Bard
|
r15216 | |||
$ hg init a | ||||
$ cd a | ||||
$ mkdir sub | ||||
$ echo normal1 > normal1 | ||||
$ echo normal2 > sub/normal2 | ||||
$ echo large1 > large1 | ||||
$ echo large2 > sub/large2 | ||||
$ hg add normal1 sub/normal2 | ||||
$ hg add --large large1 sub/large2 | ||||
$ hg commit -m "add files" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
A large1 | ||||
A normal1 | ||||
A sub/large2 | ||||
A sub/normal2 | ||||
Na'Tosha Bard
|
r15216 | $ echo normal11 > normal1 | ||
$ echo normal22 > sub/normal2 | ||||
$ echo large11 > large1 | ||||
$ echo large22 > sub/large2 | ||||
Levi Bard
|
r15795 | $ hg commit -m "edit files" | ||
Invoking status precommit hook | ||||
Na'Tosha Bard
|
r15225 | M large1 | ||
M normal1 | ||||
M sub/large2 | ||||
M sub/normal2 | ||||
Na'Tosha Bard
|
r15787 | $ hg sum --large | ||
parent: 1:ce8896473775 tip | ||||
edit files | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
largefiles: No remote repo | ||||
Na'Tosha Bard
|
r15216 | |||
Greg Ward
|
r15328 | Commit preserved largefile contents. | ||
Na'Tosha Bard
|
r15216 | |||
$ cat normal1 | ||||
normal11 | ||||
$ cat large1 | ||||
large11 | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
Greg Ward
|
r15328 | Remove both largefiles and normal files. | ||
Na'Tosha Bard
|
r15216 | |||
$ hg remove normal1 large1 | ||||
$ hg commit -m "remove files" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
R large1 | ||||
R normal1 | ||||
Na'Tosha Bard
|
r15216 | $ ls | ||
sub | ||||
Na'Tosha Bard
|
r15786 | $ echo "testlargefile" > large1-test | ||
$ hg add --large large1-test | ||||
$ hg st | ||||
A large1-test | ||||
$ hg rm large1-test | ||||
not removing large1-test: file has been marked for add (use forget to undo) | ||||
$ hg st | ||||
A large1-test | ||||
$ hg forget large1-test | ||||
$ hg st | ||||
? large1-test | ||||
$ rm large1-test | ||||
Na'Tosha Bard
|
r15216 | |||
Na'Tosha Bard
|
r15598 | Copy both largefiles and normal files (testing that status output is correct). | ||
Na'Tosha Bard
|
r15216 | |||
$ hg cp sub/normal2 normal1 | ||||
$ hg cp sub/large2 large1 | ||||
Levi Bard
|
r15795 | $ hg commit -m "copy files" | ||
Invoking status precommit hook | ||||
Na'Tosha Bard
|
r15598 | A large1 | ||
A normal1 | ||||
Na'Tosha Bard
|
r15216 | $ cat normal1 | ||
normal22 | ||||
$ cat large1 | ||||
large22 | ||||
Test moving largefiles and verify that normal files are also unaffected. | ||||
$ hg mv normal1 normal3 | ||||
$ hg mv large1 large3 | ||||
$ hg mv sub/normal2 sub/normal4 | ||||
$ hg mv sub/large2 sub/large4 | ||||
$ hg commit -m "move files" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
A large3 | ||||
A normal3 | ||||
A sub/large4 | ||||
A sub/normal4 | ||||
R large1 | ||||
R normal1 | ||||
R sub/large2 | ||||
R sub/normal2 | ||||
Na'Tosha Bard
|
r15216 | $ cat normal3 | ||
normal22 | ||||
$ cat large3 | ||||
large22 | ||||
$ cat sub/normal4 | ||||
normal22 | ||||
$ cat sub/large4 | ||||
large22 | ||||
Test archiving the various revisions. These hit corner cases known with | ||||
archiving. | ||||
$ hg archive -r 0 ../archive0 | ||||
$ hg archive -r 1 ../archive1 | ||||
$ hg archive -r 2 ../archive2 | ||||
$ hg archive -r 3 ../archive3 | ||||
$ hg archive -r 4 ../archive4 | ||||
$ cd ../archive0 | ||||
$ cat normal1 | ||||
normal1 | ||||
$ cat large1 | ||||
large1 | ||||
$ cat sub/normal2 | ||||
normal2 | ||||
$ cat sub/large2 | ||||
large2 | ||||
$ cd ../archive1 | ||||
$ cat normal1 | ||||
normal11 | ||||
$ cat large1 | ||||
large11 | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
$ cd ../archive2 | ||||
$ ls | ||||
sub | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
$ cd ../archive3 | ||||
$ cat normal1 | ||||
normal22 | ||||
$ cat large1 | ||||
large22 | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
$ cd ../archive4 | ||||
$ cat normal3 | ||||
normal22 | ||||
$ cat large3 | ||||
large22 | ||||
$ cat sub/normal4 | ||||
normal22 | ||||
$ cat sub/large4 | ||||
large22 | ||||
Na'Tosha Bard
|
r15251 | |||
Greg Ward
|
r15328 | Commit corner case: specify files to commit. | ||
Na'Tosha Bard
|
r15251 | |||
$ cd ../a | ||||
$ echo normal3 > normal3 | ||||
$ echo large3 > large3 | ||||
$ echo normal4 > sub/normal4 | ||||
$ echo large4 > sub/large4 | ||||
$ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M large3 | ||||
M normal3 | ||||
M sub/large4 | ||||
M sub/normal4 | ||||
Na'Tosha Bard
|
r15251 | $ cat normal3 | ||
normal3 | ||||
$ cat large3 | ||||
large3 | ||||
$ cat sub/normal4 | ||||
normal4 | ||||
$ cat sub/large4 | ||||
large4 | ||||
Greg Ward
|
r15328 | One more commit corner case: commit from a subdirectory. | ||
Na'Tosha Bard
|
r15251 | |||
$ cd ../a | ||||
$ echo normal33 > normal3 | ||||
$ echo large33 > large3 | ||||
$ echo normal44 > sub/normal4 | ||||
$ echo large44 > sub/large4 | ||||
$ cd sub | ||||
$ hg commit -m "edit files yet again" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M large3 | ||||
M normal3 | ||||
M sub/large4 | ||||
M sub/normal4 | ||||
Na'Tosha Bard
|
r15251 | $ cat ../normal3 | ||
normal33 | ||||
$ cat ../large3 | ||||
large33 | ||||
$ cat normal4 | ||||
normal44 | ||||
$ cat large4 | ||||
large44 | ||||
Greg Ward
|
r15328 | Committing standins is not allowed. | ||
Na'Tosha Bard
|
r15251 | |||
$ cd .. | ||||
$ echo large3 > large3 | ||||
$ hg commit .hglf/large3 -m "try to commit standin" | ||||
Greg Ward
|
r15253 | abort: file ".hglf/large3" is a largefile standin | ||
(commit the largefile itself instead) | ||||
Na'Tosha Bard
|
r15251 | [255] | ||
Greg Ward
|
r15328 | Corner cases for adding largefiles. | ||
Na'Tosha Bard
|
r15251 | |||
$ echo large5 > large5 | ||||
$ hg add --large large5 | ||||
$ hg add --large large5 | ||||
large5 already a largefile | ||||
$ mkdir sub2 | ||||
$ echo large6 > sub2/large6 | ||||
$ echo large7 > sub2/large7 | ||||
$ hg add --large sub2 | ||||
Mads Kiilerich
|
r15447 | adding sub2/large6 as a largefile (glob) | ||
adding sub2/large7 as a largefile (glob) | ||||
Na'Tosha Bard
|
r15251 | $ hg st | ||
M large3 | ||||
A large5 | ||||
A sub2/large6 | ||||
A sub2/large7 | ||||
Greg Ward
|
r15328 | Config settings (pattern **.dat, minsize 2 MB) are respected. | ||
Na'Tosha Bard
|
r15251 | |||
$ echo testdata > test.dat | ||||
Greg Ward
|
r15330 | $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null | ||
Na'Tosha Bard
|
r15251 | $ hg add | ||
adding reallylarge as a largefile | ||||
adding test.dat as a largefile | ||||
Greg Ward
|
r15329 | |||
Test that minsize and --lfsize handle float values; | ||||
also tests that --lfsize overrides largefiles.minsize. | ||||
(0.250 MB = 256 kB = 262144 B) | ||||
Na'Tosha Bard
|
r15251 | |||
Greg Ward
|
r15329 | $ dd if=/dev/zero of=ratherlarge bs=1024 count=256 > /dev/null 2> /dev/null | ||
$ dd if=/dev/zero of=medium bs=1024 count=128 > /dev/null 2> /dev/null | ||||
$ hg --config largefiles.minsize=.25 add | ||||
adding ratherlarge as a largefile | ||||
adding medium | ||||
$ hg forget medium | ||||
$ hg --config largefiles.minsize=.25 add --lfsize=.125 | ||||
adding medium as a largefile | ||||
$ dd if=/dev/zero of=notlarge bs=1024 count=127 > /dev/null 2> /dev/null | ||||
$ hg --config largefiles.minsize=.25 add --lfsize=.125 | ||||
adding notlarge | ||||
$ hg forget notlarge | ||||
Na'Tosha Bard
|
r15251 | |||
Test forget on largefiles. | ||||
Greg Ward
|
r15329 | $ hg forget large3 large5 test.dat reallylarge ratherlarge medium | ||
Levi Bard
|
r15795 | $ hg commit -m "add/edit more largefiles" | ||
Invoking status precommit hook | ||||
Na'Tosha Bard
|
r15251 | A sub2/large6 | ||
A sub2/large7 | ||||
R large3 | ||||
? large5 | ||||
Greg Ward
|
r15329 | ? medium | ||
? notlarge | ||||
? ratherlarge | ||||
Na'Tosha Bard
|
r15251 | ? reallylarge | ||
? test.dat | ||||
$ hg st | ||||
? large3 | ||||
? large5 | ||||
Greg Ward
|
r15329 | ? medium | ||
? notlarge | ||||
? ratherlarge | ||||
Na'Tosha Bard
|
r15251 | ? reallylarge | ||
? test.dat | ||||
Greg Ward
|
r15328 | Purge with largefiles: verify that largefiles are still in the working | ||
dir after a purge. | ||||
Na'Tosha Bard
|
r15251 | |||
$ hg purge --all | ||||
$ cat sub/large4 | ||||
large44 | ||||
$ cat sub2/large6 | ||||
large6 | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Na'Tosha Bard
|
r15792 | Test addremove: verify that files that should be added as largfiles are added as | ||
such and that already-existing largfiles are not added as normal files by | ||||
accident. | ||||
$ rm normal3 | ||||
$ rm sub/large4 | ||||
$ echo "testing addremove with patterns" > testaddremove.dat | ||||
$ echo "normaladdremove" > normaladdremove | ||||
$ hg addremove | ||||
removing sub/large4 | ||||
adding testaddremove.dat as a largefile | ||||
removing normal3 | ||||
adding normaladdremove | ||||
Greg Ward
|
r15328 | Clone a largefiles repo. | ||
Na'Tosha Bard
|
r15251 | |||
Martin Geisler
|
r15548 | $ hg clone . ../b | ||
Na'Tosha Bard
|
r15251 | updating to branch default | ||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
3 largefiles updated, 0 removed | ||||
Martin Geisler
|
r15548 | $ cd ../b | ||
Na'Tosha Bard
|
r15384 | $ hg log --template '{rev}:{node|short} {desc|firstline}\n' | ||
7:daea875e9014 add/edit more largefiles | ||||
6:4355d653f84f edit files yet again | ||||
5:9d5af5072dbd edit files again | ||||
4:74c02385b94c move files | ||||
3:9e8fbc4bce62 copy files | ||||
2:51a0ae4d5864 remove files | ||||
1:ce8896473775 edit files | ||||
0:30d30fe6a5be add files | ||||
Na'Tosha Bard
|
r15251 | $ cat normal3 | ||
normal33 | ||||
$ cat sub/normal4 | ||||
normal44 | ||||
$ cat sub/large4 | ||||
large44 | ||||
$ cat sub2/large6 | ||||
large6 | ||||
$ cat sub2/large7 | ||||
large7 | ||||
$ cd .. | ||||
$ hg clone a -r 3 c | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 4 changesets with 10 changes to 4 files | ||||
updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
2 largefiles updated, 0 removed | ||||
$ cd c | ||||
Na'Tosha Bard
|
r15384 | $ hg log --template '{rev}:{node|short} {desc|firstline}\n' | ||
3:9e8fbc4bce62 copy files | ||||
2:51a0ae4d5864 remove files | ||||
1:ce8896473775 edit files | ||||
0:30d30fe6a5be add files | ||||
Na'Tosha Bard
|
r15251 | $ cat normal1 | ||
normal22 | ||||
$ cat large1 | ||||
large22 | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
Greg Ward
|
r15328 | Old revisions of a clone have correct largefiles content (this also | ||
tests update). | ||||
Na'Tosha Bard
|
r15251 | |||
$ hg update -r 1 | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
$ cat large1 | ||||
large11 | ||||
$ cat sub/large2 | ||||
large22 | ||||
Greg Ward
|
r15328 | Rebasing between two repositories does not revert largefiles to old | ||
Na'Tosha Bard
|
r15251 | revisions (this was a very bad bug that took a lot of work to fix). | ||
$ cd .. | ||||
$ hg clone a d | ||||
updating to branch default | ||||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
3 largefiles updated, 0 removed | ||||
$ cd b | ||||
$ echo large4-modified > sub/large4 | ||||
$ echo normal3-modified > normal3 | ||||
$ hg commit -m "modify normal file and largefile in repo b" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M normal3 | ||||
M sub/large4 | ||||
Na'Tosha Bard
|
r15251 | $ cd ../d | ||
$ echo large6-modified > sub2/large6 | ||||
$ echo normal4-modified > sub/normal4 | ||||
$ hg commit -m "modify normal file largefile in repo d" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M sub/normal4 | ||||
M sub2/large6 | ||||
Na'Tosha Bard
|
r15297 | $ cd .. | ||
$ hg clone d e | ||||
updating to branch default | ||||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
3 largefiles updated, 0 removed | ||||
$ cd d | ||||
Na'Tosha Bard
|
r15251 | $ hg pull --rebase ../b | ||
pulling from ../b | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 2 changes to 2 files (+1 heads) | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M sub/normal4 | ||||
M sub2/large6 | ||||
Na'Tosha Bard
|
r15251 | saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg | ||
nothing to rebase | ||||
Na'Tosha Bard
|
r15384 | $ hg log --template '{rev}:{node|short} {desc|firstline}\n' | ||
9:598410d3eb9a modify normal file largefile in repo d | ||||
8:a381d2c8c80e modify normal file and largefile in repo b | ||||
7:daea875e9014 add/edit more largefiles | ||||
6:4355d653f84f edit files yet again | ||||
5:9d5af5072dbd edit files again | ||||
4:74c02385b94c move files | ||||
3:9e8fbc4bce62 copy files | ||||
2:51a0ae4d5864 remove files | ||||
1:ce8896473775 edit files | ||||
0:30d30fe6a5be add files | ||||
Na'Tosha Bard
|
r15251 | $ cat normal3 | ||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-modified | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Na'Tosha Bard
|
r15297 | $ cd ../e | ||
$ hg pull ../b | ||||
pulling from ../b | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 2 changes to 2 files (+1 heads) | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | ||||
Na'Tosha Bard
|
r15916 | caching new largefiles | ||
0 largefiles cached | ||||
Na'Tosha Bard
|
r15297 | $ hg rebase | ||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M sub/normal4 | ||||
M sub2/large6 | ||||
Na'Tosha Bard
|
r15297 | saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg | ||
Na'Tosha Bard
|
r15784 | $ hg log --template '{rev}:{node|short} {desc|firstline}\n' | ||
9:598410d3eb9a modify normal file largefile in repo d | ||||
8:a381d2c8c80e modify normal file and largefile in repo b | ||||
7:daea875e9014 add/edit more largefiles | ||||
6:4355d653f84f edit files yet again | ||||
5:9d5af5072dbd edit files again | ||||
4:74c02385b94c move files | ||||
3:9e8fbc4bce62 copy files | ||||
2:51a0ae4d5864 remove files | ||||
1:ce8896473775 edit files | ||||
0:30d30fe6a5be add files | ||||
Na'Tosha Bard
|
r15297 | $ cat normal3 | ||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-modified | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Greg Ward
|
r15328 | Rollback on largefiles. | ||
Na'Tosha Bard
|
r15297 | |||
$ echo large4-modified-again > sub/large4 | ||||
$ hg commit -m "Modify large4 again" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M sub/large4 | ||||
Na'Tosha Bard
|
r15297 | $ hg rollback | ||
repository tip rolled back to revision 9 (undo commit) | ||||
working directory now based on revision 9 | ||||
$ hg st | ||||
M sub/large4 | ||||
Na'Tosha Bard
|
r15784 | $ hg log --template '{rev}:{node|short} {desc|firstline}\n' | ||
9:598410d3eb9a modify normal file largefile in repo d | ||||
8:a381d2c8c80e modify normal file and largefile in repo b | ||||
7:daea875e9014 add/edit more largefiles | ||||
6:4355d653f84f edit files yet again | ||||
5:9d5af5072dbd edit files again | ||||
4:74c02385b94c move files | ||||
3:9e8fbc4bce62 copy files | ||||
2:51a0ae4d5864 remove files | ||||
1:ce8896473775 edit files | ||||
0:30d30fe6a5be add files | ||||
Na'Tosha Bard
|
r15297 | $ cat sub/large4 | ||
large4-modified-again | ||||
Greg Ward
|
r15365 | "update --check" refuses to update with uncommitted changes. | ||
$ hg update --check 8 | ||||
abort: uncommitted local changes | ||||
[255] | ||||
Greg Ward
|
r15328 | "update --clean" leaves correct largefiles in working copy. | ||
Na'Tosha Bard
|
r15297 | |||
$ hg update --clean | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
$ cat normal3 | ||||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-modified | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Greg Ward
|
r15365 | Now "update check" is happy. | ||
$ hg update --check 8 | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
$ hg update --check | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
Patrick Mezard
|
r15900 | Test removing empty largefiles directories on update | ||
$ test -d sub2 && echo "sub2 exists" | ||||
sub2 exists | ||||
$ hg update -q null | ||||
$ test -d sub2 && echo "error: sub2 should not exist anymore" | ||||
[1] | ||||
$ hg update -q | ||||
Patrick Mezard
|
r15930 | Test hg remove removes empty largefiles directories | ||
$ test -d sub2 && echo "sub2 exists" | ||||
sub2 exists | ||||
$ hg remove sub2/* | ||||
$ test -d sub2 && echo "error: sub2 should not exist anymore" | ||||
[1] | ||||
$ hg revert sub2/large6 sub2/large7 | ||||
Greg Ward
|
r15366 | "revert" works on largefiles (and normal files too). | ||
$ echo hack3 >> normal3 | ||||
$ echo hack4 >> sub/normal4 | ||||
$ echo hack4 >> sub/large4 | ||||
Na'Tosha Bard
|
r15983 | $ rm sub2/large6 | ||
$ hg revert sub2/large6 | ||||
Greg Ward
|
r15366 | $ hg rm sub2/large6 | ||
$ echo new >> sub2/large8 | ||||
$ hg add --large sub2/large8 | ||||
# XXX we don't really want to report that we're reverting the standin; | ||||
# that's just an implementation detail. But I don't see an obvious fix. ;-( | ||||
$ hg revert sub | ||||
Mads Kiilerich
|
r15447 | reverting .hglf/sub/large4 (glob) | ||
reverting sub/normal4 (glob) | ||||
Greg Ward
|
r15366 | $ hg status | ||
M normal3 | ||||
A sub2/large8 | ||||
R sub2/large6 | ||||
? sub/large4.orig | ||||
? sub/normal4.orig | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-modified | ||||
$ hg revert -a --no-backup | ||||
Mads Kiilerich
|
r15447 | undeleting .hglf/sub2/large6 (glob) | ||
forgetting .hglf/sub2/large8 (glob) | ||||
Greg Ward
|
r15366 | reverting normal3 | ||
$ hg status | ||||
? sub/large4.orig | ||||
? sub/normal4.orig | ||||
? sub2/large8 | ||||
$ cat normal3 | ||||
normal3-modified | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ rm sub/*.orig sub2/large8 | ||||
revert some files to an older revision | ||||
$ hg revert --no-backup -r 8 sub2 | ||||
Mads Kiilerich
|
r15447 | reverting .hglf/sub2/large6 (glob) | ||
Greg Ward
|
r15366 | $ cat sub2/large6 | ||
large6 | ||||
$ hg revert --no-backup sub2 | ||||
Mads Kiilerich
|
r15447 | reverting .hglf/sub2/large6 (glob) | ||
Greg Ward
|
r15366 | $ hg status | ||
Eli Carter
|
r15370 | "verify --large" actually verifies largefiles | ||
Na'Tosha Bard
|
r15297 | |||
$ hg verify --large | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
10 files, 10 changesets, 28 total revisions | ||||
searching 1 changesets for largefiles | ||||
verified existence of 3 revisions of 3 largefiles | ||||
Na'Tosha Bard
|
r15298 | |||
Na'Tosha Bard
|
r15916 | Merging does not revert to old versions of largefiles and also check | ||
that merging after having pulled from a non-default remote works | ||||
correctly. | ||||
Na'Tosha Bard
|
r15298 | |||
$ cd .. | ||||
Na'Tosha Bard
|
r15916 | $ hg clone -r 7 e temp | ||
Na'Tosha Bard
|
r15298 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 24 changes to 10 files | ||||
updating to branch default | ||||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
3 largefiles updated, 0 removed | ||||
Na'Tosha Bard
|
r15916 | $ hg clone temp f | ||
updating to branch default | ||||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
3 largefiles updated, 0 removed | ||||
# Delete the largefiles in the largefiles system cache so that we have an | ||||
# opportunity to test that caching after a pull works. | ||||
$ rm ${USERCACHE}/* | ||||
Na'Tosha Bard
|
r15298 | $ cd f | ||
$ echo "large4-merge-test" > sub/large4 | ||||
$ hg commit -m "Modify large4 to test merge" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M sub/large4 | ||||
Na'Tosha Bard
|
r15298 | $ hg pull ../e | ||
pulling from ../e | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 4 changes to 4 files (+1 heads) | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | ||||
Na'Tosha Bard
|
r15916 | caching new largefiles | ||
2 largefiles cached | ||||
Na'Tosha Bard
|
r15298 | $ hg merge | ||
merging sub/large4 | ||||
largefile sub/large4 has a merge conflict | ||||
keep (l)ocal or take (o)ther? l | ||||
3 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
$ hg commit -m "Merge repos e and f" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M normal3 | ||||
M sub/normal4 | ||||
M sub2/large6 | ||||
Na'Tosha Bard
|
r15298 | $ cat normal3 | ||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-merge-test | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Na'Tosha Bard
|
r15382 | |||
Martin Geisler
|
r15629 | Test status after merging with a branch that introduces a new largefile: | ||
$ echo large > large | ||||
$ hg add --large large | ||||
$ hg commit -m 'add largefile' | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
A large | ||||
Martin Geisler
|
r15629 | $ hg update -q ".^" | ||
$ echo change >> normal3 | ||||
$ hg commit -m 'some change' | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
M normal3 | ||||
Martin Geisler
|
r15629 | created new head | ||
$ hg merge | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
$ hg status | ||||
M large | ||||
Na'Tosha Bard
|
r15382 | Test that a normal file and a largefile with the same name and path cannot | ||
coexist. | ||||
$ rm sub2/large7 | ||||
$ echo "largeasnormal" > sub2/large7 | ||||
$ hg add sub2/large7 | ||||
sub2/large7 already a largefile | ||||
Na'Tosha Bard
|
r15383 | |||
Test that transplanting a largefile change works correctly. | ||||
$ cd .. | ||||
$ hg clone -r 8 d g | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 9 changesets with 26 changes to 10 files | ||||
updating to branch default | ||||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
3 largefiles updated, 0 removed | ||||
$ cd g | ||||
$ hg transplant -s ../d 598410d3eb9a | ||||
searching for changes | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 2 changes to 2 files | ||||
Na'Tosha Bard
|
r15384 | $ hg log --template '{rev}:{node|short} {desc|firstline}\n' | ||
9:598410d3eb9a modify normal file largefile in repo d | ||||
8:a381d2c8c80e modify normal file and largefile in repo b | ||||
7:daea875e9014 add/edit more largefiles | ||||
6:4355d653f84f edit files yet again | ||||
5:9d5af5072dbd edit files again | ||||
4:74c02385b94c move files | ||||
3:9e8fbc4bce62 copy files | ||||
2:51a0ae4d5864 remove files | ||||
1:ce8896473775 edit files | ||||
0:30d30fe6a5be add files | ||||
Na'Tosha Bard
|
r15383 | $ cat normal3 | ||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-modified | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Na'Tosha Bard
|
r15598 | |||
Test that renaming a largefile results in correct output for status | ||||
$ hg rename sub/large4 large4-renamed | ||||
Levi Bard
|
r15795 | $ hg commit -m "test rename output" | ||
Invoking status precommit hook | ||||
Na'Tosha Bard
|
r15598 | A large4-renamed | ||
R sub/large4 | ||||
$ cat large4-renamed | ||||
large4-modified | ||||
$ cd sub2 | ||||
$ hg rename large6 large6-renamed | ||||
$ hg st | ||||
A sub2/large6-renamed | ||||
R sub2/large6 | ||||
Na'Tosha Bard
|
r15944 | $ cd .. | ||
Test --normal flag | ||||
$ dd if=/dev/urandom bs=2k count=11k > new-largefile 2> /dev/null | ||||
$ hg add --normal --large new-largefile | ||||
abort: --normal cannot be used with --large | ||||
[255] | ||||
$ hg add --normal new-largefile | ||||
new-largefile: up to 69 MB of RAM may be required to manage this file | ||||
(use 'hg revert new-largefile' to cancel the pending addition) | ||||
$ cd .. | ||||
Eli Carter
|
r15303 | |||
Andrew Pritchard
|
r15336 | vanilla clients not locked out from largefiles servers on vanilla repos | ||
$ mkdir r1 | ||||
$ cd r1 | ||||
$ hg init | ||||
$ echo c1 > f1 | ||||
$ hg add f1 | ||||
Levi Bard
|
r15795 | $ hg commit -m "m1" | ||
Invoking status precommit hook | ||||
A f1 | ||||
Andrew Pritchard
|
r15336 | $ cd .. | ||
Thomas Arendsen Hein
|
r15378 | $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid | ||
$ cat hg.pid >> $DAEMON_PIDS | ||||
Thomas Arendsen Hein
|
r15377 | $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2 | ||
Andrew Pritchard
|
r15336 | requesting all changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
largefiles clients still work with vanilla servers | ||||
Thomas Arendsen Hein
|
r15378 | $ hg --config extensions.largefiles=! serve -R r1 -d -p $HGPORT1 --pid-file hg.pid | ||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ hg clone http://localhost:$HGPORT1 r3 | ||||
Andrew Pritchard
|
r15336 | requesting all changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
vanilla clients locked out from largefiles http repos | ||||
$ mkdir r4 | ||||
$ cd r4 | ||||
$ hg init | ||||
$ echo c1 > f1 | ||||
$ hg add --large f1 | ||||
Levi Bard
|
r15795 | $ hg commit -m "m1" | ||
Invoking status precommit hook | ||||
A f1 | ||||
Andrew Pritchard
|
r15336 | $ cd .. | ||
Thomas Arendsen Hein
|
r15378 | $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid | ||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ hg --config extensions.largefiles=! clone http://localhost:$HGPORT2 r5 | ||||
Andrew Pritchard
|
r15336 | abort: remote error: | ||
This repository uses the largefiles extension. | ||||
Please enable it in your Mercurial config file. | ||||
[255] | ||||
Thomas Arendsen Hein
|
r15378 | |||
used all HGPORTs, kill all daemons | ||||
$ "$TESTDIR/killdaemons.py" | ||||
Andrew Pritchard
|
r15336 | |||
vanilla clients locked out from largefiles ssh repos | ||||
$ hg --config extensions.largefiles=! clone -e "python $TESTDIR/dummyssh" ssh://user@dummy/r4 r5 | ||||
abort: remote error: | ||||
This repository uses the largefiles extension. | ||||
Please enable it in your Mercurial config file. | ||||
[255] | ||||
largefiles clients refuse to push largefiles repos to vanilla servers | ||||
$ mkdir r6 | ||||
$ cd r6 | ||||
$ hg init | ||||
$ echo c1 > f1 | ||||
$ hg add f1 | ||||
Levi Bard
|
r15795 | $ hg commit -m "m1" | ||
Invoking status precommit hook | ||||
A f1 | ||||
Andrew Pritchard
|
r15336 | $ cat >> .hg/hgrc <<! | ||
> [web] | ||||
> push_ssl = false | ||||
> allow_push = * | ||||
> ! | ||||
$ cd .. | ||||
$ hg clone r6 r7 | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd r7 | ||||
$ echo c2 > f2 | ||||
$ hg add --large f2 | ||||
Levi Bard
|
r15795 | $ hg commit -m "m2" | ||
Invoking status precommit hook | ||||
A f2 | ||||
Thomas Arendsen Hein
|
r15378 | $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid | ||
$ cat ../hg.pid >> $DAEMON_PIDS | ||||
Thomas Arendsen Hein
|
r15377 | $ hg push http://localhost:$HGPORT | ||
pushing to http://localhost:$HGPORT/ | ||||
Andrew Pritchard
|
r15336 | searching for changes | ||
Thomas Arendsen Hein
|
r15377 | abort: http://localhost:$HGPORT/ does not appear to be a largefile store | ||
Andrew Pritchard
|
r15336 | [255] | ||
$ cd .. | ||||
Kevin Gessner
|
r15778 | putlfile errors are shown (issue3123) | ||
Corrupt the cached largefile in r7 | ||||
$ echo corruption > $USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8 | ||||
$ hg init empty | ||||
$ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \ | ||||
> --config 'web.allow_push=*' --config web.push_ssl=False | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ hg push -R r7 http://localhost:$HGPORT1 | ||||
pushing to http://localhost:$HGPORT1/ | ||||
searching for changes | ||||
remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash | ||||
abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ | ||||
[255] | ||||
$ rm -rf empty | ||||
Eli Carter
|
r15318 | Clone a local repository owned by another user | ||
We have to simulate that here by setting $HOME and removing write permissions | ||||
$ ORIGHOME="$HOME" | ||||
$ mkdir alice | ||||
$ HOME="`pwd`/alice" | ||||
$ cd alice | ||||
$ hg init pubrepo | ||||
$ cd pubrepo | ||||
$ dd if=/dev/urandom bs=1k count=11k > a-large-file 2> /dev/null | ||||
$ hg add --large a-large-file | ||||
$ hg commit -m "Add a large file" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
A a-large-file | ||||
Eli Carter
|
r15318 | $ cd .. | ||
$ chmod -R a-w pubrepo | ||||
$ cd .. | ||||
$ mkdir bob | ||||
$ HOME="`pwd`/bob" | ||||
$ cd bob | ||||
Matt Mackall
|
r15374 | $ hg clone --pull ../alice/pubrepo pubrepo | ||
Eli Carter
|
r15318 | requesting all changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
$ cd .. | ||||
Mads Kiilerich
|
r15514 | $ chmod -R u+w alice/pubrepo | ||
Eli Carter
|
r15318 | $ HOME="$ORIGHOME" | ||
Eli Carter
|
r15369 | |||
Symlink to a large largefile should behave the same as a symlink to a normal file | ||||
$ hg init largesymlink | ||||
$ cd largesymlink | ||||
$ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null | ||||
$ hg add --large largefile | ||||
$ hg commit -m "commit a large file" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
A largefile | ||||
Eli Carter
|
r15369 | $ ln -s largefile largelink | ||
$ hg add largelink | ||||
$ hg commit -m "commit a large symlink" | ||||
Levi Bard
|
r15795 | Invoking status precommit hook | ||
A largelink | ||||
Eli Carter
|
r15369 | $ rm -f largelink | ||
$ hg up >/dev/null | ||||
Matt Mackall
|
r15372 | $ test -f largelink | ||
Eli Carter
|
r15369 | [1] | ||
$ test -L largelink | ||||
[1] | ||||
$ rm -f largelink # make next part of the test independent of the previous | ||||
$ hg up -C >/dev/null | ||||
Matt Mackall
|
r15372 | $ test -f largelink | ||
Eli Carter
|
r15369 | $ test -L largelink | ||
$ cd .. | ||||