test-share.t
286 lines
| 6.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-share.t
Pulkit Goyal
|
r46055 | #testcases safe normal | ||
#if safe | ||||
$ echo "[format]" >> $HGRCPATH | ||||
Pulkit Goyal
|
r47052 | $ echo "use-share-safe = True" >> $HGRCPATH | ||
Pulkit Goyal
|
r46055 | #endif | ||
Matt Mackall
|
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
|
r42611 | $ hg root -Tjson | sed 's|\\\\|\\|g' | ||
[ | ||||
{ | ||||
"hgpath": "$TESTTMP/repo2/.hg", | ||||
"reporoot": "$TESTTMP/repo2", | ||||
"storepath": "$TESTTMP/repo1/.hg/store" | ||||
} | ||||
] | ||||
Matt Mackall
|
r12487 | |||
Boris Feld
|
r40703 | share shouldn't have a full cache dir, original repo should | ||
Boris Feld
|
r33539 | |||
$ hg branches | ||||
default 0:d3873e73d99e | ||||
$ hg tags | ||||
tip 0:d3873e73d99e | ||||
Boris Feld
|
r40823 | $ test -d .hg/cache | ||
[1] | ||||
$ ls -1 .hg/wcache || true | ||||
Matt Harbison
|
r40710 | checkisexec (execbit !) | ||
r49111 | checklink (symlink no-rust !) | |||
checklink-target (symlink no-rust !) | ||||
r42131 | manifestfulltextcache (reporevlogstore !) | |||
Boris Feld
|
r33539 | $ ls -1 ../repo1/.hg/cache | ||
branch2-served | ||||
rbc-names-v1 | ||||
rbc-revs-v1 | ||||
tags2-visible | ||||
Joerg Sonnenberger
|
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 | ||||
r47032 | branch2-base | |||
branch2-immutable | ||||
Joerg Sonnenberger
|
r46739 | branch2-served | ||
r47032 | branch2-served.hidden | |||
branch2-visible | ||||
branch2-visible-hidden | ||||
Joerg Sonnenberger
|
r46739 | rbc-names-v1 | ||
rbc-revs-v1 | ||||
r47032 | tags2 | |||
tags2-served | ||||
Joerg Sonnenberger
|
r46739 | tags2-visible | ||
Matt Mackall
|
r12487 | Some sed versions appends newline, some don't, and some just fails | ||
$ cat .hg/sharedpath; echo | ||||
Matt Harbison
|
r35394 | $TESTTMP/repo1/.hg | ||
Matt Mackall
|
r12487 | |||
Greg Ward
|
r15101 | trailing newline on .hg/sharedpath is ok | ||
$ hg tip -q | ||||
0:d3873e73d99e | ||||
$ echo '' >> .hg/sharedpath | ||||
$ cat .hg/sharedpath | ||||
Matt Harbison
|
r35394 | $TESTTMP/repo1/.hg | ||
Greg Ward
|
r15101 | $ hg tip -q | ||
0:d3873e73d99e | ||||
Matt Mackall
|
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
|
r25472 | $ get-with-headers.py localhost:$HGPORT 'raw-file/' | ||
Matt Mackall
|
r12487 | 200 Script output follows | ||
-rw-r--r-- 4 a | ||||
-rw-r--r-- 2 b | ||||
mitchell plamann
|
r41958 | Cloning a shared repo via bundle2 results in a non-shared clone | ||
mitchell plamann
|
r41957 | |||
$ cd .. | ||||
Valentin Gatien-Baron
|
r48732 | $ hg clone -q --stream ssh://user@dummy/`pwd`/repo2 cloned-via-bundle2 | ||
mitchell plamann
|
r41957 | $ cat ./cloned-via-bundle2/.hg/requires | grep "shared" | ||
mitchell plamann
|
r41958 | [1] | ||
mitchell plamann
|
r41957 | $ hg id --cwd cloned-via-bundle2 -r tip | ||
mitchell plamann
|
r41958 | c2e0ac586386 tip | ||
mitchell plamann
|
r41957 | $ cd repo2 | ||
Simon Heimberg
|
r15080 | |||
test unshare command | ||||
$ hg unshare | ||||
$ test -d .hg/store | ||||
$ test -f .hg/sharedpath | ||||
[1] | ||||
Yuya Nishihara
|
r31211 | $ grep shared .hg/requires | ||
[1] | ||||
Simon Heimberg
|
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
|
r16913 | |||
$ cd .. | ||||
Patrick Mezard
|
r17539 | |||
Ryan McElroy
|
r23548 | |||
Matt Harbison
|
r31892 | non largefiles repos won't enable largefiles | ||
Martin von Zweigbergk
|
r42504 | $ hg share --config extensions.largefiles= repo2 sharedrepo | ||
FUJIWARA Katsunori
|
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
|
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
|
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
|
r35394 | ../../orig/.hg (no-eol) | ||
Dan Villiom Podlaski Christiansen
|
r31133 | $ grep shared thisdir/*/.hg/requires | ||
thisdir/abs/.hg/requires:shared | ||||
Gregory Szorc
|
r39884 | thisdir/rel/.hg/requires:relshared | ||
Dan Villiom Podlaski Christiansen
|
r31133 | thisdir/rel/.hg/requires:shared | ||
test that relative shared paths aren't relative to $PWD | ||||
$ cd thisdir | ||||
$ hg -R rel root | ||||
Matt Harbison
|
r35394 | $TESTTMP/thisdir/rel | ||
Dan Villiom Podlaski Christiansen
|
r31133 | $ cd .. | ||
now test that relative paths really are relative, survive across | ||||
renames and changes of PWD | ||||
$ hg -R thisdir/abs root | ||||
Matt Harbison
|
r35394 | $TESTTMP/thisdir/abs | ||
Dan Villiom Podlaski Christiansen
|
r31133 | $ hg -R thisdir/rel root | ||
Matt Harbison
|
r35394 | $TESTTMP/thisdir/rel | ||
Dan Villiom Podlaski Christiansen
|
r31133 | $ mv thisdir thatdir | ||
$ hg -R thatdir/abs root | ||||
Martin von Zweigbergk
|
r46518 | abort: .hg/sharedpath points to nonexistent directory $TESTTMP/thisdir/orig/.hg | ||
Dan Villiom Podlaski Christiansen
|
r31133 | [255] | ||
$ hg -R thatdir/rel root | ||||
Matt Harbison
|
r35394 | $TESTTMP/thatdir/rel | ||
Yuya Nishihara
|
r31212 | |||
test unshare relshared repo | ||||
$ cd thatdir/rel | ||||
$ hg unshare | ||||
$ test -d .hg/store | ||||
$ test -f .hg/sharedpath | ||||
[1] | ||||
$ grep shared .hg/requires | ||||
[1] | ||||
$ hg unshare | ||||
abort: this is not a shared repo | ||||
[255] | ||||
$ cd ../.. | ||||
Dan Villiom Podlaski Christiansen
|
r31133 | $ rm -r thatdir | ||
Gregory Szorc
|
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
|
r46518 | abort: repository requires features unknown to this Mercurial: missing-requirement | ||
Gregory Szorc
|
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
|
r17539 | Explicitly kill daemons to let the test exit on Windows | ||
Matt Mackall
|
r25474 | $ killdaemons.py | ||
Patrick Mezard
|
r17539 | |||
Pulkit Goyal
|
r45858 | Test sharing a repository which was created with store requirement disable | ||
$ hg init nostore --config format.usestore=false | ||||
Pulkit Goyal
|
r47052 | ignoring enabled 'format.use-share-safe' config because it is incompatible with disabled 'format.usestore' config (safe !) | ||
Pulkit Goyal
|
r45858 | $ hg share nostore sharednostore | ||
abort: cannot create shared repository as source was created with 'format.usestore' config disabled | ||||
[255] | ||||