--- a/tests/test-largefiles.t Thu Oct 13 12:11:25 2011 +0200
+++ b/tests/test-largefiles.t Thu Oct 13 15:15:32 2011 +0200
@@ -1,6 +1,11 @@
$ cat >> $HGRCPATH <<EOF
> [extensions]
> largefiles=
+ > purge=
+ > rebase=
+ > [largefiles]
+ > size=2
+ > patterns=glob:**.dat
> EOF
Create the repo with a couple of revisions of both large and normal
@@ -124,3 +129,316 @@
normal22
$ cat sub/large4
large22
+
+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"
+ abort: Don't commit largefile standin. Commit largefile.
+ [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
+tsts update.
+
+ $ 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"
+ $ 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