##// END OF EJS Templates
branchcache: stop writing more branchcache file on disk than needed...
branchcache: stop writing more branchcache file on disk than needed Before this change, we were unconditionally writing a branchmap file for the filter level passed to `update_disk`. This is actually counter productive if no update were needed for this filter level. In many case, the branch cache for a filter level is identical to its parent "subset" and it is better to simply keep the subset update and reuse it every time instead of having to do identical work for similar subset. So we change the `update_disk` method to only write a file when that filter level differ from its parent. This removes many cases where identical files were written, requiring multiple boring update in the test suite. The only notable changes is the change to `test-strip-branch-cache.t`, this case was checking a scenario that no longer reproduce the bug as writing less branchmap file result in less stalled cache on disk. Strictly speaking, we could create a more convoluted scenario that create a similar issue. However the next changeset would also cover that scenario so we directly updated that test case to a "no longer buggy" state.

File last commit:

r52385:2e8a88e5 default
r52385:2e8a88e5 default
Show More
test-share.t
305 lines | 7.3 KiB | text/troff | Tads3Lexer
Pulkit Goyal
share: introduce config option to store requires in .hg/store...
r46055 #testcases safe normal
#if safe
$ echo "[format]" >> $HGRCPATH
Pulkit Goyal
share: move share safe functionality out of experimental...
r47052 $ echo "use-share-safe = True" >> $HGRCPATH
Pulkit Goyal
share: introduce config option to store requires in .hg/store...
r46055 #endif
Matt Mackall
tests: unify test-share
r12487 $ echo "[extensions]" >> $HGRCPATH
$ echo "share = " >> $HGRCPATH
prepare repo1
$ hg init repo1
$ cd repo1
$ echo a > a
$ hg commit -A -m'init'
adding a
share it
$ cd ..
$ hg share repo1 repo2
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
share shouldn't have a store dir
$ cd repo2
$ test -d .hg/store
[1]
Yuya Nishihara
root: add template variables pointing to repository directories...
r42611 $ hg root -Tjson | sed 's|\\\\|\\|g'
[
{
"hgpath": "$TESTTMP/repo2/.hg",
"reporoot": "$TESTTMP/repo2",
"storepath": "$TESTTMP/repo1/.hg/store"
}
]
Matt Mackall
tests: unify test-share
r12487
Boris Feld
checkexec: create destination directory if necessary...
r40703 share shouldn't have a full cache dir, original repo should
Boris Feld
share: share 'cachevfs' with the source clone (issue5108)...
r33539
$ hg branches
default 0:d3873e73d99e
$ hg tags
tip 0:d3873e73d99e
Boris Feld
check-exec: write file in 'wcache' instead of 'cache'...
r40823 $ test -d .hg/cache
[1]
$ ls -1 .hg/wcache || true
Matt Harbison
tests: stabilize the recent checkexec changes on Windows...
r40710 checkisexec (execbit !)
dirstate: use a single closure for get_flags...
r49111 checklink (symlink no-rust !)
checklink-target (symlink no-rust !)
manifestcache: use `wcache` directory for manifest cache...
r42131 manifestfulltextcache (reporevlogstore !)
Boris Feld
share: share 'cachevfs' with the source clone (issue5108)...
r33539 $ ls -1 ../repo1/.hg/cache
branch2-served
rbc-names-v1
rbc-revs-v1
tags2-visible
Joerg Sonnenberger
share: properly copy cache files when cloning from a share...
r46739 Cloning a shared repo should pick up the full cache dir on the other hand.
$ hg clone . ../repo2-clone
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ ls -1 ../repo2-clone/.hg/cache
clone: make sure we warm the cache after a clone...
r47032 branch2-base
Joerg Sonnenberger
share: properly copy cache files when cloning from a share...
r46739 branch2-served
rbc-names-v1
rbc-revs-v1
clone: make sure we warm the cache after a clone...
r47032 tags2
tags2-served
Joerg Sonnenberger
share: properly copy cache files when cloning from a share...
r46739 tags2-visible
Matt Mackall
tests: unify test-share
r12487 Some sed versions appends newline, some don't, and some just fails
$ cat .hg/sharedpath; echo
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/repo1/.hg
Matt Mackall
tests: unify test-share
r12487
Greg Ward
share: allow trailing newline on .hg/sharedpath....
r15101 trailing newline on .hg/sharedpath is ok
$ hg tip -q
0:d3873e73d99e
$ echo '' >> .hg/sharedpath
$ cat .hg/sharedpath
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/repo1/.hg
Greg Ward
share: allow trailing newline on .hg/sharedpath....
r15101 $ hg tip -q
0:d3873e73d99e
Matt Mackall
tests: unify test-share
r12487 commit in shared clone
$ echo a >> a
$ hg commit -m'change in shared clone'
check original
$ cd ../repo1
$ hg log
changeset: 1:8af4dc49db9e
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: change in shared clone
changeset: 0:d3873e73d99e
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: init
$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat a # should be two lines of "a"
a
a
commit in original
$ echo b > b
$ hg commit -A -m'another file'
adding b
check in shared clone
$ cd ../repo2
$ hg log
changeset: 2:c2e0ac586386
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: another file
changeset: 1:8af4dc49db9e
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: change in shared clone
changeset: 0:d3873e73d99e
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: init
$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat b # should exist with one "b"
b
hg serve shared clone
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'raw-file/'
Matt Mackall
tests: unify test-share
r12487 200 Script output follows
-rw-r--r-- 4 a
-rw-r--r-- 2 b
mitchell plamann
bundle2: don't send "shared" requirement when cloning from a share...
r41958 Cloning a shared repo via bundle2 results in a non-shared clone
mitchell plamann
tests: demonstrate failure when cloning from a share via bundle2...
r41957
$ cd ..
Valentin Gatien-Baron
tests: rely on dummyssh being the default...
r48732 $ hg clone -q --stream ssh://user@dummy/`pwd`/repo2 cloned-via-bundle2
test: use `hg debugrequires` instead of `cat` in some tests...
r49295 $ hg -R cloned-via-bundle2 debugrequires | grep "shared"
mitchell plamann
bundle2: don't send "shared" requirement when cloning from a share...
r41958 [1]
mitchell plamann
tests: demonstrate failure when cloning from a share via bundle2...
r41957 $ hg id --cwd cloned-via-bundle2 -r tip
mitchell plamann
bundle2: don't send "shared" requirement when cloning from a share...
r41958 c2e0ac586386 tip
mitchell plamann
tests: demonstrate failure when cloning from a share via bundle2...
r41957 $ cd repo2
Simon Heimberg
test: test unshare command
r15080
test unshare command
$ hg unshare
$ test -d .hg/store
$ test -f .hg/sharedpath
[1]
tests: use debugrequires instead of grepping the file directly...
r49503 $ hg debugrequires | grep shared
Yuya Nishihara
share: fix typo to drop 'shared' requirement on unshare...
r31211 [1]
Simon Heimberg
test: test unshare command
r15080 $ hg unshare
abort: this is not a shared repo
[255]
check that a change does not propagate
$ echo b >> b
$ hg commit -m'change in unshared'
$ cd ../repo1
$ hg id -r tip
c2e0ac586386 tip
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..
Patrick Mezard
tests: enable more server tests on Windows
r17539
Ryan McElroy
share: implement shared bookmark functionality...
r23548
Matt Harbison
largefiles: set the extension as enabled locally after a share requiring it...
r31892 non largefiles repos won't enable largefiles
Martin von Zweigbergk
tests: separate out bookmarks tests from test-share.t...
r42504 $ hg share --config extensions.largefiles= repo2 sharedrepo
FUJIWARA Katsunori
tests: add fsmonitor specific output lines at enabling largefiles...
r33209 The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !)
The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !)
Matt Harbison
largefiles: set the extension as enabled locally after a share requiring it...
r31892 updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ [ -f sharedrepo/.hg/hgrc ]
[1]
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133 test shared clones using relative paths work
$ mkdir thisdir
$ hg init thisdir/orig
$ hg share -U thisdir/orig thisdir/abs
$ hg share -U --relative thisdir/abs thisdir/rel
$ cat thisdir/rel/.hg/sharedpath
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 ../../orig/.hg (no-eol)
tests: use debugrequires instead of grepping the file directly...
r49503 $ hg debugrequires -R thisdir/abs/ | grep shared
shared
$ hg debugrequires -R thisdir/rel/ | grep shared
relshared
shared
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133
test that relative shared paths aren't relative to $PWD
$ cd thisdir
$ hg -R rel root
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/thisdir/rel
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133 $ cd ..
now test that relative paths really are relative, survive across
renames and changes of PWD
$ hg -R thisdir/abs root
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/thisdir/abs
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133 $ hg -R thisdir/rel root
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/thisdir/rel
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133 $ mv thisdir thatdir
$ hg -R thatdir/abs root
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: .hg/sharedpath points to nonexistent directory $TESTTMP/thisdir/orig/.hg
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133 [255]
$ hg -R thatdir/rel root
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/thatdir/rel
Yuya Nishihara
share: drop 'relshared' requirement as well
r31212
test unshare relshared repo
$ cd thatdir/rel
$ hg unshare
$ test -d .hg/store
$ test -f .hg/sharedpath
[1]
tests: use debugrequires instead of grepping the file directly...
r49503 $ hg debugrequires | grep shared
Yuya Nishihara
share: drop 'relshared' requirement as well
r31212 [1]
$ hg unshare
abort: this is not a shared repo
[255]
$ cd ../..
Dan Villiom Podlaski Christiansen
share: add --relative flag to store a relative path to the source...
r31133 $ rm -r thatdir
Gregory Szorc
localrepo: document and test bug around opening shared repos...
r39732 Demonstrate buggy behavior around requirements validation
See comment in localrepo.py:makelocalrepository() for more.
$ hg init sharenewrequires
$ hg share sharenewrequires shareoldrequires
updating working directory
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat >> sharenewrequires/.hg/requires << EOF
> missing-requirement
> EOF
We cannot open the repo with the unknown requirement
$ hg -R sharenewrequires status
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: repository requires features unknown to this Mercurial: missing-requirement
Gregory Szorc
localrepo: document and test bug around opening shared repos...
r39732 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
[255]
BUG: we don't get the same error when opening the shared repo pointing to it
$ hg -R shareoldrequires status
Patrick Mezard
tests: enable more server tests on Windows
r17539 Explicitly kill daemons to let the test exit on Windows
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Patrick Mezard
tests: enable more server tests on Windows
r17539
Pulkit Goyal
localrepo: abort creating a shared repo if the source does not have store...
r45858 Test sharing a repository which was created with store requirement disable
$ hg init nostore --config format.usestore=false
Pulkit Goyal
share: move share safe functionality out of experimental...
r47052 ignoring enabled 'format.use-share-safe' config because it is incompatible with disabled 'format.usestore' config (safe !)
Pulkit Goyal
localrepo: abort creating a shared repo if the source does not have store...
r45858 $ hg share nostore sharednostore
abort: cannot create shared repository as source was created with 'format.usestore' config disabled
[255]
share: make it possible to control the working copy format variant...
r49297
Check that (safe) share can control wc-specific format variant at creation time
-------------------------------------------------------------------------------
#if no-rust
$ cat << EOF >> $HGRCPATH
> [storage]
> dirstate-v2.slow-path = allow
> EOF
#endif
$ hg init repo-safe-d1 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=no
$ hg debugformat -R repo-safe-d1 | grep dirstate-v2
dirstate-v2: no
$ hg share repo-safe-d1 share-safe-d2 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=yes
updating working directory
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugformat -R share-safe-d2 | grep dirstate-v2
dirstate-v2: yes