summaryrefslogtreecommitdiff
path: root/tests/test-largefiles.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-largefiles.t')
-rw-r--r--tests/test-largefiles.t1447
1 files changed, 0 insertions, 1447 deletions
diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
deleted file mode 100644
index c64dd73..0000000
--- a/tests/test-largefiles.t
+++ /dev/null
@@ -1,1447 +0,0 @@
- $ USERCACHE="$TESTTMP/cache"; export USERCACHE
- $ mkdir "${USERCACHE}"
- $ cat >> $HGRCPATH <<EOF
- > [extensions]
- > largefiles=
- > purge=
- > rebase=
- > transplant=
- > [phases]
- > publish=False
- > [largefiles]
- > minsize=2
- > patterns=glob:**.dat
- > usercache=${USERCACHE}
- > [hooks]
- > precommit=sh -c "echo \"Invoking status precommit hook\"; hg status"
- > EOF
-
-Create the repo with a couple of revisions of both large and normal
-files, testing that status correctly shows largefiles and that summary output
-is correct.
-
- $ 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"
- Invoking status precommit hook
- A large1
- A normal1
- A sub/large2
- A sub/normal2
- $ echo normal11 > normal1
- $ echo normal22 > sub/normal2
- $ echo large11 > large1
- $ echo large22 > sub/large2
- $ hg commit -m "edit files"
- Invoking status precommit hook
- M large1
- M normal1
- M sub/large2
- M sub/normal2
- $ hg sum --large
- parent: 1:ce8896473775 tip
- edit files
- branch: default
- commit: (clean)
- update: (current)
- largefiles: No remote repo
-
-Commit preserved largefile contents.
-
- $ cat normal1
- normal11
- $ cat large1
- large11
- $ cat sub/normal2
- normal22
- $ cat sub/large2
- large22
-
-Test status, subdir and unknown files
-
- $ echo unknown > sub/unknown
- $ hg st --all
- ? sub/unknown
- C large1
- C normal1
- C sub/large2
- C sub/normal2
- $ hg st --all sub
- ? sub/unknown
- C sub/large2
- C sub/normal2
- $ rm sub/unknown
-
-Remove both largefiles and normal files.
-
- $ hg remove normal1 large1
- $ hg status large1
- R large1
- $ hg commit -m "remove files"
- Invoking status precommit hook
- R large1
- R normal1
- $ ls
- sub
- $ 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
-
-Copy both largefiles and normal files (testing that status output is correct).
-
- $ hg cp sub/normal2 normal1
- $ hg cp sub/large2 large1
- $ hg commit -m "copy files"
- Invoking status precommit hook
- A large1
- A normal1
- $ 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"
- Invoking status precommit hook
- A large3
- A normal3
- A sub/large4
- A sub/normal4
- R large1
- R normal1
- R sub/large2
- R sub/normal2
- $ cat normal3
- normal22
- $ cat large3
- large22
- $ cat sub/normal4
- normal22
- $ cat sub/large4
- large22
-
-Test copies and moves from a directory other than root (issue3516)
-
- $ cd ..
- $ hg init lf_cpmv
- $ cd lf_cpmv
- $ mkdir dira
- $ mkdir dira/dirb
- $ touch dira/dirb/largefile
- $ hg add --large dira/dirb/largefile
- $ hg commit -m "added"
- Invoking status precommit hook
- A dira/dirb/largefile
- $ cd dira
- $ hg cp dirb/largefile foo/largefile
- $ hg ci -m "deep copy"
- Invoking status precommit hook
- A dira/foo/largefile
- $ find . | sort
- .
- ./dirb
- ./dirb/largefile
- ./foo
- ./foo/largefile
- $ hg mv foo/largefile baz/largefile
- $ hg ci -m "moved"
- Invoking status precommit hook
- A dira/baz/largefile
- R dira/foo/largefile
- $ find . | sort
- .
- ./baz
- ./baz/largefile
- ./dirb
- ./dirb/largefile
- ./foo
- $ cd ../../a
-
-#if hgweb
-Test display of largefiles in hgweb
-
- $ hg serve -d -p $HGPORT --pid-file ../hg.pid
- $ cat ../hg.pid >> $DAEMON_PIDS
- $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
- 200 Script output follows
-
-
- drwxr-xr-x sub
- -rw-r--r-- 41 large3
- -rw-r--r-- 9 normal3
-
-
- $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
- 200 Script output follows
-
-
- -rw-r--r-- 41 large4
- -rw-r--r-- 9 normal4
-
-
- $ "$TESTDIR/killdaemons.py"
-#endif
-
-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
-
-Commit corner case: specify files to commit.
-
- $ 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"
- Invoking status precommit hook
- M large3
- M normal3
- M sub/large4
- M sub/normal4
- $ cat normal3
- normal3
- $ cat large3
- large3
- $ cat sub/normal4
- normal4
- $ cat sub/large4
- large4
-
-One more commit corner case: commit from a subdirectory.
-
- $ 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"
- Invoking status precommit hook
- M large3
- M normal3
- M sub/large4
- M sub/normal4
- $ cat ../normal3
- normal33
- $ cat ../large3
- large33
- $ cat normal4
- normal44
- $ cat large4
- large44
-
-Committing standins is not allowed.
-
- $ cd ..
- $ echo large3 > large3
- $ hg commit .hglf/large3 -m "try to commit standin"
- abort: file ".hglf/large3" is a largefile standin
- (commit the largefile itself instead)
- [255]
-
-Corner cases 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 (glob)
- adding sub2/large7 as a largefile (glob)
- $ hg st
- M large3
- A large5
- A sub2/large6
- A sub2/large7
-
-Test "hg status" with combination of 'file pattern' and 'directory
-pattern' for largefiles:
-
- $ hg status sub2/large6 sub2
- A sub2/large6
- A sub2/large7
-
-Config settings (pattern **.dat, minsize 2 MB) are respected.
-
- $ echo testdata > test.dat
- $ dd bs=1k count=2k if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
- $ hg add
- adding reallylarge as a largefile
- adding test.dat as a largefile
-
-Test that minsize and --lfsize handle float values;
-also tests that --lfsize overrides largefiles.minsize.
-(0.250 MB = 256 kB = 262144 B)
-
- $ 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
-
-Test forget on largefiles.
-
- $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
- $ hg commit -m "add/edit more largefiles"
- Invoking status precommit hook
- A sub2/large6
- A sub2/large7
- R large3
- ? large5
- ? medium
- ? notlarge
- ? ratherlarge
- ? reallylarge
- ? test.dat
- $ hg st
- ? large3
- ? large5
- ? medium
- ? notlarge
- ? ratherlarge
- ? reallylarge
- ? test.dat
-
-Purge with largefiles: verify that largefiles are still in the working
-dir after a purge.
-
- $ hg purge --all
- $ cat sub/large4
- large44
- $ cat sub2/large6
- large6
- $ cat sub2/large7
- large7
-
-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
-
-Test addremove with -R
-
- $ hg up -C
- 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
- getting changed largefiles
- 1 largefiles updated, 0 removed
- $ rm normal3
- $ rm sub/large4
- $ echo "testing addremove with patterns" > testaddremove.dat
- $ echo "normaladdremove" > normaladdremove
- $ cd ..
- $ hg -R a addremove
- removing sub/large4
- adding a/testaddremove.dat as a largefile (glob)
- removing normal3
- adding normaladdremove
- $ cd a
-
-Test 3364
- $ hg clone . ../addrm
- 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 ../addrm
- $ cat >> .hg/hgrc <<EOF
- > [hooks]
- > post-commit.stat=sh -c "echo \"Invoking status postcommit hook\"; hg status -A"
- > EOF
- $ touch foo
- $ hg add --large foo
- $ hg ci -m "add foo"
- Invoking status precommit hook
- A foo
- Invoking status postcommit hook
- C foo
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
- $ rm foo
- $ hg st
- ! foo
-hmm.. no precommit invoked, but there is a postcommit??
- $ hg ci -m "will not checkin"
- nothing changed
- Invoking status postcommit hook
- ! foo
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
- [1]
- $ hg addremove
- removing foo
- $ hg st
- R foo
- $ hg ci -m "used to say nothing changed"
- Invoking status precommit hook
- R foo
- Invoking status postcommit hook
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
- $ hg st
-
-Test 3507 (both normal files and largefiles were a problem)
-
- $ touch normal
- $ touch large
- $ hg add normal
- $ hg add --large large
- $ hg ci -m "added"
- Invoking status precommit hook
- A large
- A normal
- Invoking status postcommit hook
- C large
- C normal
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
- $ hg remove normal
- $ hg addremove --traceback
- $ hg ci -m "addremoved normal"
- Invoking status precommit hook
- R normal
- Invoking status postcommit hook
- C large
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
- $ hg up -C '.^'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- getting changed largefiles
- 0 largefiles updated, 0 removed
- $ hg remove large
- $ hg addremove --traceback
- $ hg ci -m "removed large"
- Invoking status precommit hook
- R large
- created new head
- Invoking status postcommit hook
- C normal
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
-
-Test that a standin can't be added as a large file
-
- $ touch large
- $ hg add --large large
- $ hg ci -m "add"
- Invoking status precommit hook
- A large
- Invoking status postcommit hook
- C large
- C normal
- C normal3
- C sub/large4
- C sub/normal4
- C sub2/large6
- C sub2/large7
- $ hg remove large
- $ touch large
- $ hg addremove --config largefiles.patterns=**large --traceback
- adding large as a largefile
-
-Test that outgoing --large works (with revsets too)
- $ hg outgoing --rev '.^' --large
- comparing with $TESTTMP/a (glob)
- searching for changes
- changeset: 8:c02fd3b77ec4
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: add foo
-
- changeset: 9:289dd08c9bbb
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: used to say nothing changed
-
- changeset: 10:34f23ac6ac12
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: added
-
- changeset: 12:710c1b2f523c
- parent: 10:34f23ac6ac12
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: removed large
-
- searching for changes
- largefiles to upload:
- large
- foo
-
- $ cd ../a
-
-Clone a largefiles repo.
-
- $ hg clone . ../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 --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
- $ 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 --template '{rev}:{node|short} {desc|firstline}\n'
- 3:9e8fbc4bce62 copy files
- 2:51a0ae4d5864 remove files
- 1:ce8896473775 edit files
- 0:30d30fe6a5be add files
- $ cat normal1
- normal22
- $ cat large1
- large22
- $ cat sub/normal2
- normal22
- $ cat sub/large2
- large22
-
-Old revisions of a clone have correct largefiles content (this also
-tests 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
- $ cd ..
-
-Test cloning with --all-largefiles flag
-
- $ rm "${USERCACHE}"/*
- $ hg clone --all-largefiles a a-backup
- updating to branch default
- 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
- getting changed largefiles
- 3 largefiles updated, 0 removed
- 8 additional largefiles cached
-
- $ hg clone --all-largefiles a ssh://localhost/a
- abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
- [255]
-
-Test pulling with --all-largefiles flag
-
- $ rm -Rf a-backup
- $ hg clone -r 1 a a-backup
- adding changesets
- adding manifests
- adding file changes
- added 2 changesets with 8 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
- $ rm "${USERCACHE}"/*
- $ cd a-backup
- $ hg pull --all-largefiles
- pulling from $TESTTMP/a (glob)
- searching for changes
- adding changesets
- adding manifests
- adding file changes
- added 6 changesets with 16 changes to 8 files
- (run 'hg update' to get a working copy)
- caching new largefiles
- 3 largefiles cached
- 3 additional largefiles cached
- $ cd ..
-
-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).
-
- $ 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"
- Invoking status precommit hook
- M normal3
- M sub/large4
- $ cd ../d
- $ echo large6-modified > sub2/large6
- $ echo normal4-modified > sub/normal4
- $ hg commit -m "modify normal file largefile in repo d"
- Invoking status precommit hook
- M sub/normal4
- M sub2/large6
- $ 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
- $ 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)
- Invoking status precommit hook
- M sub/normal4
- M sub2/large6
- saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
- nothing to rebase
- $ 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
- $ cat normal3
- normal3-modified
- $ cat sub/normal4
- normal4-modified
- $ cat sub/large4
- large4-modified
- $ cat sub2/large6
- large6-modified
- $ cat sub2/large7
- large7
- $ 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)
- caching new largefiles
- 0 largefiles cached
- $ hg rebase
- Invoking status precommit hook
- M sub/normal4
- M sub2/large6
- saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob)
- $ 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
- $ cat normal3
- normal3-modified
- $ cat sub/normal4
- normal4-modified
- $ cat sub/large4
- large4-modified
- $ cat sub2/large6
- large6-modified
- $ cat sub2/large7
- large7
-
-Rollback on largefiles.
-
- $ echo large4-modified-again > sub/large4
- $ hg commit -m "Modify large4 again"
- Invoking status precommit hook
- M sub/large4
- $ 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 --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
- $ cat sub/large4
- large4-modified-again
-
-"update --check" refuses to update with uncommitted changes.
- $ hg update --check 8
- abort: uncommitted local changes
- [255]
-
-"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
-
-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
-
-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
-
-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
-
-"revert" works on largefiles (and normal files too).
- $ echo hack3 >> normal3
- $ echo hack4 >> sub/normal4
- $ echo hack4 >> sub/large4
- $ rm sub2/large6
- $ hg revert sub2/large6
- $ 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
- reverting .hglf/sub/large4 (glob)
- reverting sub/normal4 (glob)
- $ 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
- undeleting .hglf/sub2/large6 (glob)
- forgetting .hglf/sub2/large8 (glob)
- 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
- reverting .hglf/sub2/large6 (glob)
- $ cat sub2/large6
- large6
- $ hg revert --no-backup -C -r '.^' sub2
- reverting .hglf/sub2/large6 (glob)
- $ hg revert --no-backup sub2
- reverting .hglf/sub2/large6 (glob)
- $ hg status
-
-"verify --large" actually 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
-
-Merging does not revert to old versions of largefiles and also check
-that merging after having pulled from a non-default remote works
-correctly.
-
- $ cd ..
- $ hg clone -r 7 e temp
- 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
- $ 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}"/*
- $ cd f
- $ echo "large4-merge-test" > sub/large4
- $ hg commit -m "Modify large4 to test merge"
- Invoking status precommit hook
- M sub/large4
- $ 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)
- caching new largefiles
- 2 largefiles cached
- $ 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"
- Invoking status precommit hook
- M normal3
- M sub/normal4
- M sub2/large6
- $ cat normal3
- normal3-modified
- $ cat sub/normal4
- normal4-modified
- $ cat sub/large4
- large4-merge-test
- $ cat sub2/large6
- large6-modified
- $ cat sub2/large7
- large7
-
-Test status after merging with a branch that introduces a new largefile:
-
- $ echo large > large
- $ hg add --large large
- $ hg commit -m 'add largefile'
- Invoking status precommit hook
- A large
- $ hg update -q ".^"
- $ echo change >> normal3
- $ hg commit -m 'some change'
- Invoking status precommit hook
- M normal3
- 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
-
-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
-
-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
- getting changed largefiles
- 1 largefiles updated, 0 removed
- $ 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
- $ cat normal3
- normal3-modified
- $ cat sub/normal4
- normal4-modified
- $ cat sub/large4
- large4-modified
- $ cat sub2/large6
- large6-modified
- $ cat sub2/large7
- large7
-
-Cat a largefile
- $ hg cat normal3
- normal3-modified
- $ hg cat sub/large4
- large4-modified
- $ rm "${USERCACHE}"/*
- $ hg cat -r a381d2c8c80e -o cat.out sub/large4
- $ cat cat.out
- large4-modified
- $ rm cat.out
- $ hg cat -r a381d2c8c80e normal3
- normal3-modified
- $ hg cat -r '.^' normal3
- normal3-modified
- $ hg cat -r '.^' sub/large4
- large4-modified
-
-Test that renaming a largefile results in correct output for status
-
- $ hg rename sub/large4 large4-renamed
- $ hg commit -m "test rename output"
- Invoking status precommit hook
- 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
- $ cd ..
-
-Test --normal flag
-
- $ dd if=/dev/zero 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 ..
-
-#if serve
-vanilla clients not locked out from largefiles servers on vanilla repos
- $ mkdir r1
- $ cd r1
- $ hg init
- $ echo c1 > f1
- $ hg add f1
- $ hg commit -m "m1"
- Invoking status precommit hook
- A f1
- $ cd ..
- $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
- $ cat hg.pid >> $DAEMON_PIDS
- $ hg --config extensions.largefiles=! clone http://localhost:$HGPORT r2
- 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
- $ 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
- 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
-#endif
-
-
-vanilla clients locked out from largefiles http repos
- $ mkdir r4
- $ cd r4
- $ hg init
- $ echo c1 > f1
- $ hg add --large f1
- $ hg commit -m "m1"
- Invoking status precommit hook
- A f1
- $ cd ..
-
-#if serve
- $ 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
- abort: remote error:
-
- This repository uses the largefiles extension.
-
- Please enable it in your Mercurial config file.
- [255]
-
-used all HGPORTs, kill all daemons
- $ "$TESTDIR/killdaemons.py"
-#endif
-
-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]
-
-#if serve
-
-largefiles clients refuse to push largefiles repos to vanilla servers
- $ mkdir r6
- $ cd r6
- $ hg init
- $ echo c1 > f1
- $ hg add f1
- $ hg commit -m "m1"
- Invoking status precommit hook
- A f1
- $ 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
- $ hg commit -m "m2"
- Invoking status precommit hook
- A f2
- $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
- $ cat ../hg.pid >> $DAEMON_PIDS
- $ hg push http://localhost:$HGPORT
- pushing to http://localhost:$HGPORT/
- searching for changes
- abort: http://localhost:$HGPORT/ does not appear to be a largefile store
- [255]
- $ cd ..
-
-putlfile errors are shown (issue3123)
-Corrupt the cached largefile in r7 and in the usercache (required for testing on vfat)
- $ echo corruption > "$TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8"
- $ 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/ (glob)
- [255]
- $ rm -rf empty
-
-Push a largefiles repository to a served empty repository
- $ hg init r8
- $ echo c3 > r8/f1
- $ hg add --large r8/f1 -R r8
- $ hg commit -m "m1" -R r8
- Invoking status precommit hook
- A f1
- $ hg init empty
- $ hg serve -R empty -d -p $HGPORT2 --pid-file hg.pid \
- > --config 'web.allow_push=*' --config web.push_ssl=False
- $ cat hg.pid >> $DAEMON_PIDS
- $ rm "${USERCACHE}"/*
- $ hg push -R r8 http://localhost:$HGPORT2
- pushing to http://localhost:$HGPORT2/
- searching for changes
- searching for changes
- remote: adding changesets
- remote: adding manifests
- remote: adding file changes
- remote: added 1 changesets with 1 changes to 1 files
- $ rm -rf empty
-
-used all HGPORTs, kill all daemons
- $ "$TESTDIR/killdaemons.py"
-
-#endif
-
-
-#if unix-permissions
-
-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/zero bs=1k count=11k > a-large-file 2> /dev/null
- $ hg add --large a-large-file
- $ hg commit -m "Add a large file"
- Invoking status precommit hook
- A a-large-file
- $ cd ..
- $ chmod -R a-w pubrepo
- $ cd ..
- $ mkdir bob
- $ HOME="`pwd`/bob"
- $ cd bob
- $ hg clone --pull ../alice/pubrepo pubrepo
- 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 ..
- $ chmod -R u+w alice/pubrepo
- $ HOME="$ORIGHOME"
-
-#endif
-
-#if symlink
-
-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"
- Invoking status precommit hook
- A largefile
- $ ln -s largefile largelink
- $ hg add largelink
- $ hg commit -m "commit a large symlink"
- Invoking status precommit hook
- A largelink
- $ rm -f largelink
- $ hg up >/dev/null
- $ test -f largelink
- [1]
- $ test -L largelink
- [1]
- $ rm -f largelink # make next part of the test independent of the previous
- $ hg up -C >/dev/null
- $ test -f largelink
- $ test -L largelink
- $ cd ..
-
-#endif
-
-test for pattern matching on 'hg status':
-to boost performance, largefiles checks whether specified patterns are
-related to largefiles in working directory (NOT to STANDIN) or not.
-
- $ hg init statusmatch
- $ cd statusmatch
-
- $ mkdir -p a/b/c/d
- $ echo normal > a/b/c/d/e.normal.txt
- $ hg add a/b/c/d/e.normal.txt
- $ echo large > a/b/c/d/e.large.txt
- $ hg add --large a/b/c/d/e.large.txt
- $ mkdir -p a/b/c/x
- $ echo normal > a/b/c/x/y.normal.txt
- $ hg add a/b/c/x/y.normal.txt
- $ hg commit -m 'add files'
- Invoking status precommit hook
- A a/b/c/d/e.large.txt
- A a/b/c/d/e.normal.txt
- A a/b/c/x/y.normal.txt
-
-(1) no pattern: no performance boost
- $ hg status -A
- C a/b/c/d/e.large.txt
- C a/b/c/d/e.normal.txt
- C a/b/c/x/y.normal.txt
-
-(2) pattern not related to largefiles: performance boost
- $ hg status -A a/b/c/x
- C a/b/c/x/y.normal.txt
-
-(3) pattern related to largefiles: no performance boost
- $ hg status -A a/b/c/d
- C a/b/c/d/e.large.txt
- C a/b/c/d/e.normal.txt
-
-(4) pattern related to STANDIN (not to largefiles): performance boost
- $ hg status -A .hglf/a
- C .hglf/a/b/c/d/e.large.txt
-
-(5) mixed case: no performance boost
- $ hg status -A a/b/c/x a/b/c/d
- C a/b/c/d/e.large.txt
- C a/b/c/d/e.normal.txt
- C a/b/c/x/y.normal.txt
-
-verify that largefiles doesn't break filesets
-
- $ hg log --rev . --exclude "set:binary()"
- changeset: 0:41bd42f10efa
- tag: tip
- user: test
- date: Thu Jan 01 00:00:00 1970 +0000
- summary: add files
-
-verify that large files in subrepos handled properly
- $ hg init subrepo
- $ echo "subrepo = subrepo" > .hgsub
- $ hg add .hgsub
- $ hg ci -m "add subrepo"
- Invoking status precommit hook
- A .hgsub
- ? .hgsubstate
- $ echo "rev 1" > subrepo/large.txt
- $ hg -R subrepo add --large subrepo/large.txt
- $ hg sum
- parent: 1:8ee150ea2e9c tip
- add subrepo
- branch: default
- commit: 1 subrepos
- update: (current)
- $ hg st
- $ hg st -S
- A subrepo/large.txt
- $ hg ci -S -m "commit top repo"
- committing subrepository subrepo
- Invoking status precommit hook
- A large.txt
- Invoking status precommit hook
- M .hgsubstate
-# No differences
- $ hg st -S
- $ hg sum
- parent: 2:ce4cd0c527a6 tip
- commit top repo
- branch: default
- commit: (clean)
- update: (current)
- $ echo "rev 2" > subrepo/large.txt
- $ hg st -S
- M subrepo/large.txt
- $ hg sum
- parent: 2:ce4cd0c527a6 tip
- commit top repo
- branch: default
- commit: 1 subrepos
- update: (current)
- $ hg ci -m "this commit should fail without -S"
- abort: uncommitted changes in subrepo subrepo
- (use --subrepos for recursive commit)
- [255]
-
-Add a normal file to the subrepo, then test archiving
-
- $ echo 'normal file' > subrepo/normal.txt
- $ hg -R subrepo add subrepo/normal.txt
-
-Lock in subrepo, otherwise the change isn't archived
-
- $ hg ci -S -m "add normal file to top level"
- committing subrepository subrepo
- Invoking status precommit hook
- M large.txt
- A normal.txt
- Invoking status precommit hook
- M .hgsubstate
- $ hg archive -S lf_subrepo_archive
- $ find lf_subrepo_archive | sort
- lf_subrepo_archive
- lf_subrepo_archive/.hg_archival.txt
- lf_subrepo_archive/.hgsub
- lf_subrepo_archive/.hgsubstate
- lf_subrepo_archive/a
- lf_subrepo_archive/a/b
- lf_subrepo_archive/a/b/c
- lf_subrepo_archive/a/b/c/d
- lf_subrepo_archive/a/b/c/d/e.large.txt
- lf_subrepo_archive/a/b/c/d/e.normal.txt
- lf_subrepo_archive/a/b/c/x
- lf_subrepo_archive/a/b/c/x/y.normal.txt
- lf_subrepo_archive/subrepo
- lf_subrepo_archive/subrepo/large.txt
- lf_subrepo_archive/subrepo/normal.txt
-
- $ cd ..