test-largefiles.t
663 lines
| 15.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-largefiles.t
Na'Tosha Bard
|
r15216 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> largefiles= | ||||
Na'Tosha Bard
|
r15251 | > purge= | ||
> rebase= | ||||
> [largefiles] | ||||
> size=2 | ||||
> patterns=glob:**.dat | ||||
Na'Tosha Bard
|
r15216 | > EOF | ||
Create the repo with a couple of revisions of both large and normal | ||||
Na'Tosha Bard
|
r15225 | files (testing that status correctly shows largefiles. | ||
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" | ||||
$ echo normal11 > normal1 | ||||
$ echo normal22 > sub/normal2 | ||||
$ echo large11 > large1 | ||||
$ echo large22 > sub/large2 | ||||
Na'Tosha Bard
|
r15225 | $ hg st | ||
M large1 | ||||
M normal1 | ||||
M sub/large2 | ||||
M sub/normal2 | ||||
Na'Tosha Bard
|
r15216 | $ hg commit -m "edit files" | ||
Verify that committing new versions of largefiles results in correct | ||||
largefile contents, and also that non-largefiles are not affected | ||||
badly. | ||||
$ cat normal1 | ||||
normal11 | ||||
$ cat large1 | ||||
large11 | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
Verify removing largefiles and normal files works on largefile repos. | ||||
$ hg remove normal1 large1 | ||||
$ hg commit -m "remove files" | ||||
$ ls | ||||
sub | ||||
Test copying largefiles. | ||||
$ hg cp sub/normal2 normal1 | ||||
$ hg cp sub/large2 large1 | ||||
$ hg commit -m "copy files" | ||||
$ 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" | ||||
$ 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 | |||
Test a separate commit corner case (specifying files to commit) and check | ||||
that the commited files have the right value. | ||||
$ 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" | ||||
$ cat normal3 | ||||
normal3 | ||||
$ cat large3 | ||||
large3 | ||||
$ cat sub/normal4 | ||||
normal4 | ||||
$ cat sub/large4 | ||||
large4 | ||||
Test one more commit corner case that has been known to break (comitting from | ||||
a sub-directory of the repo). | ||||
$ 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" | ||||
$ cat ../normal3 | ||||
normal33 | ||||
$ cat ../large3 | ||||
large33 | ||||
$ cat normal4 | ||||
normal44 | ||||
$ cat large4 | ||||
large44 | ||||
Check that committing standins is not allowed. | ||||
$ 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] | ||
Test some cornercases for adding largefiles. | ||||
$ 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 | ||||
adding sub2/large6 as a largefile | ||||
adding sub2/large7 as a largefile | ||||
$ hg st | ||||
M large3 | ||||
A large5 | ||||
A sub2/large6 | ||||
A sub2/large7 | ||||
Test that files get added as largefiles based on .hgrc settings | ||||
$ echo testdata > test.dat | ||||
$ dd bs=3145728 count=1 if=/dev/zero of=reallylarge > /dev/null 2> /dev/null | ||||
$ hg add | ||||
adding reallylarge as a largefile | ||||
adding test.dat as a largefile | ||||
$ dd bs=1048576 count=1 if=/dev/zero of=reallylarge2 > /dev/null 2> /dev/null | ||||
Test that specifying the --lsize command on the comand-line works | ||||
$ hg add --lfsize 1 | ||||
adding reallylarge2 as a largefile | ||||
Test forget on largefiles. | ||||
$ hg forget large3 large5 test.dat reallylarge reallylarge2 | ||||
$ hg st | ||||
A sub2/large6 | ||||
A sub2/large7 | ||||
R large3 | ||||
? large5 | ||||
? reallylarge | ||||
? reallylarge2 | ||||
? test.dat | ||||
$ hg commit -m "add/edit more largefiles" | ||||
$ hg st | ||||
? large3 | ||||
? large5 | ||||
? reallylarge | ||||
? reallylarge2 | ||||
? test.dat | ||||
Test purge with largefiles (verify that largefiles get populated in the | ||||
working copy correctly after a purge) | ||||
$ hg purge --all | ||||
$ cat sub/large4 | ||||
large44 | ||||
$ cat sub2/large6 | ||||
large6 | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Test cloning a largefiles repo. | ||||
$ cd .. | ||||
$ hg clone a b | ||||
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 | ||||
$ hg log | ||||
changeset: 7:daea875e9014 | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add/edit more largefiles | ||||
changeset: 6:4355d653f84f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files yet again | ||||
changeset: 5:9d5af5072dbd | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files again | ||||
changeset: 4:74c02385b94c | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: move files | ||||
changeset: 3:9e8fbc4bce62 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: copy files | ||||
changeset: 2:51a0ae4d5864 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: remove files | ||||
changeset: 1:ce8896473775 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files | ||||
changeset: 0:30d30fe6a5be | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add files | ||||
$ 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 | ||||
$ hg log | ||||
changeset: 3:9e8fbc4bce62 | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: copy files | ||||
changeset: 2:51a0ae4d5864 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: remove files | ||||
changeset: 1:ce8896473775 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files | ||||
changeset: 0:30d30fe6a5be | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add files | ||||
$ cat normal1 | ||||
normal22 | ||||
$ cat large1 | ||||
large22 | ||||
$ cat sub/normal2 | ||||
normal22 | ||||
$ cat sub/large2 | ||||
large22 | ||||
Test that old revisions of a clone have correct largefiles content. This also | ||||
Eli Carter
|
r15301 | 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 | ||||
Test that rebasing between two repositories does not revert largefiles to old | ||||
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" | ||||
$ cd ../d | ||||
$ echo large6-modified > sub2/large6 | ||||
$ echo normal4-modified > sub/normal4 | ||||
$ hg commit -m "modify normal file largefile in repo d" | ||||
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) | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg | ||||
nothing to rebase | ||||
$ hg log | ||||
changeset: 9:598410d3eb9a | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: modify normal file largefile in repo d | ||||
changeset: 8:a381d2c8c80e | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: modify normal file and largefile in repo b | ||||
changeset: 7:daea875e9014 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add/edit more largefiles | ||||
changeset: 6:4355d653f84f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files yet again | ||||
changeset: 5:9d5af5072dbd | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files again | ||||
changeset: 4:74c02385b94c | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: move files | ||||
changeset: 3:9e8fbc4bce62 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: copy files | ||||
changeset: 2:51a0ae4d5864 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: remove files | ||||
changeset: 1:ce8896473775 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files | ||||
changeset: 0:30d30fe6a5be | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add files | ||||
$ 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) | ||||
$ hg rebase | ||||
getting changed largefiles | ||||
1 largefiles updated, 0 removed | ||||
saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg | ||||
$ hg log | ||||
changeset: 9:598410d3eb9a | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: modify normal file largefile in repo d | ||||
changeset: 8:a381d2c8c80e | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: modify normal file and largefile in repo b | ||||
changeset: 7:daea875e9014 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add/edit more largefiles | ||||
changeset: 6:4355d653f84f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files yet again | ||||
changeset: 5:9d5af5072dbd | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files again | ||||
changeset: 4:74c02385b94c | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: move files | ||||
changeset: 3:9e8fbc4bce62 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: copy files | ||||
changeset: 2:51a0ae4d5864 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: remove files | ||||
changeset: 1:ce8896473775 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files | ||||
changeset: 0:30d30fe6a5be | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add files | ||||
$ cat normal3 | ||||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-modified | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||
Test rollback on largefiles | ||||
$ echo large4-modified-again > sub/large4 | ||||
$ hg commit -m "Modify large4 again" | ||||
$ hg rollback | ||||
repository tip rolled back to revision 9 (undo commit) | ||||
working directory now based on revision 9 | ||||
$ hg st | ||||
M sub/large4 | ||||
$ hg log | ||||
changeset: 9:598410d3eb9a | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: modify normal file largefile in repo d | ||||
changeset: 8:a381d2c8c80e | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: modify normal file and largefile in repo b | ||||
changeset: 7:daea875e9014 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add/edit more largefiles | ||||
changeset: 6:4355d653f84f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files yet again | ||||
changeset: 5:9d5af5072dbd | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files again | ||||
changeset: 4:74c02385b94c | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: move files | ||||
changeset: 3:9e8fbc4bce62 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: copy files | ||||
changeset: 2:51a0ae4d5864 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: remove files | ||||
changeset: 1:ce8896473775 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: edit files | ||||
changeset: 0:30d30fe6a5be | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add files | ||||
$ cat sub/large4 | ||||
large4-modified-again | ||||
Test that `update --clean` leaves correct largefiles in working copy. | ||||
$ 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 | ||||
Test that verify --large actaully verifies largefiles | ||||
$ 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 | |||
Test that merging does not revert to old versions of largefiles (this has | ||||
also been very problematic). | ||||
$ cd .. | ||||
$ hg clone -r 7 e f | ||||
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 | ||||
$ cd f | ||||
$ echo "large4-merge-test" > sub/large4 | ||||
$ hg commit -m "Modify large4 to test merge" | ||||
$ 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) | ||||
$ 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" | ||||
$ cat normal3 | ||||
normal3-modified | ||||
$ cat sub/normal4 | ||||
normal4-modified | ||||
$ cat sub/large4 | ||||
large4-merge-test | ||||
$ cat sub2/large6 | ||||
large6-modified | ||||
$ cat sub2/large7 | ||||
large7 | ||||