##// END OF EJS Templates
manifestcache: protect write with `wlock` instead of `lock`...
manifestcache: protect write with `wlock` instead of `lock` The `wlock` is taken by both `update` and `commit` type operation. This would help persisting the cache more aggressively. An explicit test is introduced. However, we can already see the effect of this change on earlier test output.

File last commit:

r42130:d1218230 default
r42130:d1218230 default
Show More
test-hardlinks.t
432 lines | 10.0 KiB | text/troff | Tads3Lexer
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #require hardlink reporevlogstore
Mads Kiilerich
tests: introduce hghave hardlinks...
r16971
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ cat > nlinks.py <<EOF
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > from __future__ import print_function
Adrian Buehlmann
test-hardlinks: enable for Windows
r16918 > import sys
Matt Harbison
py3: convert filename to bytes in test-hardlinks.t...
r40904 > from mercurial import pycompat, util
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 > for f in sorted(sys.stdin.readlines()):
> f = f[:-1]
Matt Harbison
py3: convert filename to bytes in test-hardlinks.t...
r40904 > print(util.nlinks(pycompat.fsencode(f)), f)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 > EOF
$ nlinksdir()
> {
Matt Harbison
tests: quote PYTHON usage...
r39743 > find "$@" -type f | "$PYTHON" $TESTTMP/nlinks.py
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 > }
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 Some implementations of cp can't create hardlinks (replaces 'cp -al' on Linux):
$ cat > linkcp.py <<EOF
Augie Fackler
tests: update test-hardlinks to pass our import checker
r33960 > from __future__ import absolute_import
> import sys
Mark Thomas
py3: fix test-hardlinks.t...
r40368 > from mercurial import pycompat, util
> util.copyfiles(pycompat.fsencode(sys.argv[1]),
> pycompat.fsencode(sys.argv[2]), hardlink=True)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 > EOF
$ linkcp()
> {
Matt Harbison
tests: quote PYTHON usage...
r39743 > "$PYTHON" $TESTTMP/linkcp.py $1 $2
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 > }
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 Prepare repo r1:
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init r1
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ cd r1
$ echo c1 > f1
$ hg add f1
$ hg ci -m0
$ mkdir d1
$ cd d1
$ echo c2 > f2
$ hg add f2
$ hg ci -m1
$ cd ../..
$ nlinksdir r1/.hg/store
1 r1/.hg/store/00changelog.i
1 r1/.hg/store/00manifest.i
1 r1/.hg/store/data/d1/f2.i
1 r1/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 1 r1/.hg/store/fncache (repofncache !)
Pierre-Yves David
phases: set new commit in 1-phase
r15483 1 r1/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r1/.hg/store/undo
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 1 r1/.hg/store/undo.backup.fncache (repofncache !)
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r1/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r1/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Create hardlinked clone r2:
Pierre-Yves David
progress: get the extremely verbose output out of default debug...
r25125 $ hg clone -U --debug r1 r2 --config progress.debug=true
av6
copystore: provide unit to ui.makeprogress()
r40671 linking: 1 files
linking: 2 files
linking: 3 files
linking: 4 files
linking: 5 files
linking: 6 files
linking: 7 files
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 linked 7 files
Create non-hardlinked clone r3:
$ hg clone --pull r1 r3
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 40d85e9847f2:7069c422939c
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Repos r1 and r2 should now contain hardlinked files:
$ nlinksdir r1/.hg/store
2 r1/.hg/store/00changelog.i
2 r1/.hg/store/00manifest.i
2 r1/.hg/store/data/d1/f2.i
2 r1/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 2 r1/.hg/store/fncache (repofncache !)
Pierre-Yves David
phases: set new commit in 1-phase
r15483 1 r1/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r1/.hg/store/undo
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 1 r1/.hg/store/undo.backup.fncache (repofncache !)
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r1/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r1/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
$ nlinksdir r2/.hg/store
2 r2/.hg/store/00changelog.i
2 r2/.hg/store/00manifest.i
2 r2/.hg/store/data/d1/f2.i
2 r2/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 2 r2/.hg/store/fncache (repofncache !)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Repo r3 should not be hardlinked:
$ nlinksdir r3/.hg/store
1 r3/.hg/store/00changelog.i
1 r3/.hg/store/00manifest.i
1 r3/.hg/store/data/d1/f2.i
1 r3/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 1 r3/.hg/store/fncache (repofncache !)
Pierre-Yves David
phases: change publish behavior to only alter behavior when server....
r15659 1 r3/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r3/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r3/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r3/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Create a non-inlined filelog in r3:
$ cd r3/d1
Adrian Buehlmann
test-hardlinks: enable for Windows
r16918 >>> f = open('data1', 'wb')
>>> for x in range(10000):
Pulkit Goyal
py3: fix .write() calls in few tests...
r38097 ... f.write(b"%d\n" % x) and None
Adrian Buehlmann
test-hardlinks: enable for Windows
r16918 >>> f.close()
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ for j in 0 1 2 3 4 5 6 7 8 9; do
> cat data1 >> f2
> hg commit -m$j
> done
$ cd ../..
$ nlinksdir r3/.hg/store
1 r3/.hg/store/00changelog.i
1 r3/.hg/store/00manifest.i
1 r3/.hg/store/data/d1/f2.d
1 r3/.hg/store/data/d1/f2.i
1 r3/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 1 r3/.hg/store/fncache (repofncache !)
Pierre-Yves David
phases: set new commit in 1-phase
r15483 1 r3/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r3/.hg/store/undo
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 1 r3/.hg/store/undo.backup.fncache (repofncache !)
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r3/.hg/store/undo.backup.phaseroots
1 r3/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r3/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Push to repo r1 should break up most hardlinks in r2:
$ hg -R r2 verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 2 changes to 2 files
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
$ cd r3
$ hg push
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 pushing to $TESTTMP/r1
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 searching for changes
adding changesets
adding manifests
adding file changes
added 10 changesets with 10 changes to 1 files
$ cd ..
$ nlinksdir r2/.hg/store
1 r2/.hg/store/00changelog.i
1 r2/.hg/store/00manifest.i
1 r2/.hg/store/data/d1/f2.i
2 r2/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 [12] r2/\.hg/store/fncache (re) (repofncache !)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 #if hardlink-whitelisted repofncache
Jun Wu
test-hardlinks: unify two test files into one...
r32294 $ nlinksdir r2/.hg/store/fncache
2 r2/.hg/store/fncache
#endif
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ hg -R r2 verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 2 changes to 2 files
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
$ cd r1
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Committing a change to f1 in r1 must break up hardlink f1.i in r2:
$ echo c1c1 >> f1
$ hg ci -m00
$ cd ..
$ nlinksdir r2/.hg/store
1 r2/.hg/store/00changelog.i
1 r2/.hg/store/00manifest.i
1 r2/.hg/store/data/d1/f2.i
1 r2/.hg/store/data/f1.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 [12] r2/\.hg/store/fncache (re) (repofncache !)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 #if hardlink-whitelisted repofncache
Jun Wu
test-hardlinks: unify two test files into one...
r32294 $ nlinksdir r2/.hg/store/fncache
2 r2/.hg/store/fncache
#endif
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 Create a file which exec permissions we will change
$ cd r3
$ echo "echo hello world" > f3
$ hg add f3
$ hg ci -mf3
$ cd ..
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 $ cd r3
$ hg tip --template '{rev}:{node|short}\n'
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 12:d3b77733a28a
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 $ echo bla > f1
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 $ chmod +x f3
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 $ hg ci -m1
$ cd ..
Create hardlinked copy r4 of r3 (on Linux, we would call 'cp -al'):
$ linkcp r3 r4
Jun Wu
test-hardlink: do not test .hg/cache/checklink...
r32295 'checklink' is produced by hardlinking a symlink, which is undefined whether
the symlink should be followed or not. It does behave differently on Linux and
BSD. Just remove it so the test pass on both platforms.
Augie Fackler
tests: update `rm` invocation for new location of checklink...
r40870 $ rm -f r4/.hg/wcache/checklink
Jun Wu
test-hardlink: do not test .hg/cache/checklink...
r32295
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 r4 has hardlinks in the working dir (not just inside .hg):
$ nlinksdir r4
2 r4/.hg/00changelog.i
2 r4/.hg/branch
Matt Harbison
tests: fix up recent conditionalized output changes...
r32304 2 r4/.hg/cache/branch2-base
2 r4/.hg/cache/branch2-served
Gregory Szorc
tests: mark manifestfulltextcache as conditional on revlog store...
r39359 2 r4/.hg/cache/manifestfulltextcache (reporevlogstore !)
Mads Kiilerich
branchmap: use revbranchcache when updating branch map...
r23786 2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/dirstate
FUJIWARA Katsunori
tests: add extra output for fsmonitor at checking under .hg
r33427 2 r4/.hg/fsmonitor.state (fsmonitor !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/hgrc
2 r4/.hg/last-message.txt
2 r4/.hg/requires
2 r4/.hg/store/00changelog.i
2 r4/.hg/store/00manifest.i
2 r4/.hg/store/data/d1/f2.d
2 r4/.hg/store/data/d1/f2.i
2 r4/.hg/store/data/f1.i
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 2 r4/.hg/store/data/f3.i
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 2 r4/.hg/store/fncache (repofncache !)
Pierre-Yves David
phases: set new commit in 1-phase
r15483 2 r4/.hg/store/phaseroots
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/undo
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 2 r4/.hg/store/undo.backup.fncache (repofncache !)
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 2 r4/.hg/store/undo.backup.phaseroots
2 r4/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 2 r4/.hg/store/undo.phaseroots
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.backup\.dirstate (re)
Alexander Solovyov
fix bookmarks rollback behavior...
r14266 2 r4/.hg/undo.bookmarks
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/undo.branch
2 r4/.hg/undo.desc
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.dirstate (re)
Matt Harbison
tests: stabilize for recent wcache changes...
r40843 2 r4/.hg/wcache/checkisexec (execbit !)
2 r4/.hg/wcache/checklink-target (symlink !)
2 r4/.hg/wcache/checknoexec (execbit !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/d1/data1
2 r4/d1/f2
2 r4/f1
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 2 r4/f3
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 Update back to revision 12 in r4 should break hardlink of file f1 and f3:
Jun Wu
test-hardlinks: unify two test files into one...
r32294 #if hardlink-whitelisted
$ nlinksdir r4/.hg/undo.backup.dirstate r4/.hg/undo.dirstate
4 r4/.hg/undo.backup.dirstate
4 r4/.hg/undo.dirstate
#endif
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 $ hg -R r4 up 12
Matt Harbison
test-hardlinks: stabilize for Windows...
r32780 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (execbit !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-execbit !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
$ nlinksdir r4
2 r4/.hg/00changelog.i
1 r4/.hg/branch
Matt Harbison
tests: fix up recent conditionalized output changes...
r32304 2 r4/.hg/cache/branch2-base
2 r4/.hg/cache/branch2-served
manifestcache: protect write with `wlock` instead of `lock`...
r42130 1 r4/.hg/cache/manifestfulltextcache (reporevlogstore !)
Mads Kiilerich
branchmap: use revbranchcache when updating branch map...
r23786 2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 1 r4/.hg/dirstate
FUJIWARA Katsunori
tests: add extra output for fsmonitor at checking under .hg
r33427 1 r4/.hg/fsmonitor.state (fsmonitor !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/hgrc
2 r4/.hg/last-message.txt
2 r4/.hg/requires
2 r4/.hg/store/00changelog.i
2 r4/.hg/store/00manifest.i
2 r4/.hg/store/data/d1/f2.d
2 r4/.hg/store/data/d1/f2.i
2 r4/.hg/store/data/f1.i
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 2 r4/.hg/store/data/f3.i
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/fncache
Pierre-Yves David
phases: set new commit in 1-phase
r15483 2 r4/.hg/store/phaseroots
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/undo
Gregory Szorc
simplestore: use a custom store for the simple store repo...
r37433 2 r4/.hg/store/undo.backup.fncache (repofncache !)
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 2 r4/.hg/store/undo.backup.phaseroots
2 r4/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 2 r4/.hg/store/undo.phaseroots
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.backup\.dirstate (re)
Alexander Solovyov
fix bookmarks rollback behavior...
r14266 2 r4/.hg/undo.bookmarks
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/undo.branch
2 r4/.hg/undo.desc
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.dirstate (re)
Matt Harbison
tests: stabilize for recent wcache changes...
r40843 2 r4/.hg/wcache/checkisexec (execbit !)
2 r4/.hg/wcache/checklink-target (symlink !)
2 r4/.hg/wcache/checknoexec (execbit !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/d1/data1
2 r4/d1/f2
1 r4/f1
Matt Harbison
test-hardlinks: stabilize for Windows...
r32780 1 r4/f3 (execbit !)
2 r4/f3 (no-execbit !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Jun Wu
test-hardlinks: unify two test files into one...
r32294 #if hardlink-whitelisted
$ nlinksdir r4/.hg/undo.backup.dirstate r4/.hg/undo.dirstate
4 r4/.hg/undo.backup.dirstate
4 r4/.hg/undo.dirstate
#endif
Adrian Buehlmann
tests: integrate test-hardlinks-safety.t into test-hardlinks.t...
r13034
Test hardlinking outside hg:
$ mkdir x
$ echo foo > x/a
$ linkcp x y
$ echo bar >> y/a
No diff if hardlink:
$ diff x/a y/a
Test mq hardlinking:
$ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
$ hg init a
$ cd a
$ hg qimport -n foo - << EOF
> # HG changeset patch
> # Date 1 0
> diff -r 2588a8b53d66 a
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/a Wed Jul 23 15:54:29 2008 +0200
> @@ -0,0 +1,1 @@
> +a
> EOF
adding foo to series file
$ hg qpush
applying foo
now at: foo
$ cd ..
$ linkcp a b
$ cd b
$ hg qimport -n bar - << EOF
> # HG changeset patch
> # Date 2 0
> diff -r 2588a8b53d66 a
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/b Wed Jul 23 15:54:29 2008 +0200
> @@ -0,0 +1,1 @@
> +b
> EOF
adding bar to series file
$ hg qpush
applying bar
now at: bar
$ cat .hg/patches/status
430ed4828a74fa4047bc816a25500f7472ab4bfe:foo
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c:bar
$ cat .hg/patches/series
foo
bar
$ cat ../a/.hg/patches/status
430ed4828a74fa4047bc816a25500f7472ab4bfe:foo
$ cat ../a/.hg/patches/series
foo
Test tags hardlinking:
$ hg qdel -r qbase:qtip
patch foo finalized without changeset message
patch bar finalized without changeset message
$ hg tag -l lfoo
$ hg tag foo
$ cd ..
$ linkcp b c
$ cd c
$ hg tag -l -r 0 lbar
$ hg tag -r 0 bar
$ cat .hgtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c foo
430ed4828a74fa4047bc816a25500f7472ab4bfe bar
$ cat .hg/localtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c lfoo
430ed4828a74fa4047bc816a25500f7472ab4bfe lbar
$ cat ../b/.hgtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c foo
$ cat ../b/.hg/localtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c lfoo
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..