test-clone.t
1326 lines
| 34.3 KiB
| text/troff
|
Tads3Lexer
/ tests / test-clone.t
|
r36235 | #testcases sshv1 sshv2 | ||
#if sshv2 | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [experimental] | ||||
> sshpeer.advertise-v2 = true | ||||
> sshserver.support-v2 = true | ||||
> EOF | ||||
#endif | ||||
|
r11806 | Prepare repo a: | ||
|
r13956 | $ hg init a | ||
|
r11806 | $ cd a | ||
$ echo a > a | ||||
$ hg add a | ||||
$ hg commit -m test | ||||
$ echo first line > b | ||||
$ hg add b | ||||
Create a non-inlined filelog: | ||||
|
r39743 | $ "$PYTHON" -c 'open("data1", "wb").write(b"".join(b"%d\n" % x for x in range(10000)))' | ||
|
r11806 | $ for j in 0 1 2 3 4 5 6 7 8 9; do | ||
> cat data1 >> b | ||||
> hg commit -m test | ||||
> done | ||||
List files in store/data (should show a 'b.d'): | ||||
|
r37356 | #if reporevlogstore | ||
|
r11806 | $ for i in .hg/store/data/*; do | ||
> echo $i | ||||
> done | ||||
.hg/store/data/a.i | ||||
.hg/store/data/b.d | ||||
.hg/store/data/b.i | ||||
|
r37356 | #endif | ||
|
r11806 | |||
|
r22264 | Trigger branchcache creation: | ||
$ hg branches | ||||
default 10:a7949464abda | ||||
$ ls .hg/cache | ||||
branch2-served | ||||
|
r23786 | rbc-names-v1 | ||
rbc-revs-v1 | ||||
|
r22264 | |||
|
r11806 | Default operation: | ||
$ hg clone . ../b | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd ../b | ||||
|
r22264 | |||
Ensure branchcache got copied over: | ||||
$ ls .hg/cache | ||||
r47032 | branch2-base | |||
branch2-immutable | ||||
|
r22264 | branch2-served | ||
r47032 | branch2-served.hidden | |||
branch2-visible | ||||
branch2-visible-hidden | ||||
r32494 | rbc-names-v1 | |||
rbc-revs-v1 | ||||
r47032 | tags2 | |||
tags2-served | ||||
|
r22264 | |||
|
r11806 | $ cat a | ||
a | ||||
$ hg verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
|
r39525 | checked 11 changesets with 11 changes to 2 files | ||
|
r11806 | |||
|
r13058 | Invalid dest '' must abort: | ||
$ hg clone . '' | ||||
|
r17159 | abort: empty destination path is not valid | ||
|
r46451 | [10] | ||
|
r13058 | |||
|
r11806 | No update, with debug option: | ||
|
r16971 | #if hardlink | ||
|
r25125 | $ hg --debug clone -U . ../c --config progress.debug=true | ||
r48240 | linking: 1/15 files (6.67%) | |||
linking: 2/15 files (13.33%) | ||||
linking: 3/15 files (20.00%) | ||||
linking: 4/15 files (26.67%) | ||||
linking: 5/15 files (33.33%) | ||||
linking: 6/15 files (40.00%) | ||||
linking: 7/15 files (46.67%) | ||||
linking: 8/15 files (53.33%) | ||||
linking: 9/15 files (60.00%) | ||||
linking: 10/15 files (66.67%) | ||||
linking: 11/15 files (73.33%) | ||||
linking: 12/15 files (80.00%) | ||||
linking: 13/15 files (86.67%) | ||||
linking: 14/15 files (93.33%) | ||||
linking: 15/15 files (100.00%) | ||||
linked 15 files | ||||
r47032 | updating the branch cache | |||
|
r16971 | #else | ||
|
r25241 | $ hg --debug clone -U . ../c --config progress.debug=true | ||
r40671 | linking: 1 files | |||
copying: 2 files | ||||
copying: 3 files | ||||
copying: 4 files | ||||
copying: 5 files | ||||
copying: 6 files | ||||
copying: 7 files | ||||
copying: 8 files | ||||
|
r16971 | #endif | ||
|
r11806 | $ cd ../c | ||
|
r22264 | |||
Ensure branchcache got copied over: | ||||
$ ls .hg/cache | ||||
r47032 | branch2-base | |||
branch2-immutable | ||||
|
r22264 | branch2-served | ||
r47032 | branch2-served.hidden | |||
branch2-visible | ||||
branch2-visible-hidden | ||||
r32494 | rbc-names-v1 | |||
rbc-revs-v1 | ||||
r47032 | tags2 | |||
tags2-served | ||||
|
r22264 | |||
|
r11806 | $ cat a 2>/dev/null || echo "a not present" | ||
a not present | ||||
$ hg verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
|
r39525 | checked 11 changesets with 11 changes to 2 files | ||
|
r11806 | |||
Default destination: | ||||
$ mkdir ../d | ||||
$ cd ../d | ||||
$ hg clone ../a | ||||
destination directory: a | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd a | ||||
$ hg cat a | ||||
a | ||||
$ cd ../.. | ||||
Check that we drop the 'file:' from the path before writing the .hgrc: | ||||
$ hg clone file:a e | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ grep 'file:' e/.hg/hgrc | ||||
|
r12316 | [1] | ||
|
r11806 | |||
Check that path aliases are expanded: | ||||
$ hg clone -q -U --config 'paths.foobar=a#0' foobar f | ||||
$ hg -R f showconfig paths.default | ||||
|
r35394 | $TESTTMP/a#0 | ||
|
r11806 | |||
Use --pull: | ||||
$ hg clone --pull a g | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 11 changesets with 11 changes to 2 files | ||||
|
r34662 | new changesets acb14030fe0a:a7949464abda | ||
|
r11806 | updating to branch default | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R g verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
|
r39525 | checked 11 changesets with 11 changes to 2 files | ||
|
r11806 | |||
|
r13058 | Invalid dest '' with --pull must abort (issue2528): | ||
$ hg clone --pull a '' | ||||
|
r17159 | abort: empty destination path is not valid | ||
|
r46451 | [10] | ||
|
r13058 | |||
|
r11806 | Clone to '.': | ||
$ mkdir h | ||||
$ cd h | ||||
$ hg clone ../a . | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd .. | ||||
*** Tests for option -u *** | ||||
Adding some more history to repo a: | ||||
$ cd a | ||||
$ hg tag ref1 | ||||
$ echo the quick brown fox >a | ||||
$ hg ci -m "hacked default" | ||||
$ hg up ref1 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg branch stable | ||||
marked working directory as branch stable | ||||
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
|
r11806 | $ echo some text >a | ||
$ hg ci -m "starting branch stable" | ||||
$ hg tag ref2 | ||||
$ echo some more text >a | ||||
$ hg ci -m "another change for branch stable" | ||||
$ hg up ref2 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg parents | ||||
changeset: 13:e8ece76546a6 | ||||
branch: stable | ||||
tag: ref2 | ||||
parent: 10:a7949464abda | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: starting branch stable | ||||
Repo a has two heads: | ||||
$ hg heads | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
$ cd .. | ||||
Testing --noupdate with --updaterev (must abort): | ||||
$ hg clone --noupdate --updaterev 1 a ua | ||||
abort: cannot specify both --noupdate and --updaterev | ||||
|
r46431 | [10] | ||
|
r11806 | |||
Testing clone -u: | ||||
$ hg clone -u . a ua | ||||
updating to branch stable | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has both heads: | ||||
$ hg -R ua heads | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
Same revision checked out in repo a and ua: | ||||
$ hg -R a parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ hg -R ua parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ rm -r ua | ||||
Testing clone --pull -u: | ||||
$ hg clone --pull -u . a ua | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 16 changesets with 16 changes to 3 files (+1 heads) | ||||
|
r34662 | new changesets acb14030fe0a:0aae7cf88f0d | ||
|
r11806 | updating to branch stable | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has both heads: | ||||
$ hg -R ua heads | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
Same revision checked out in repo a and ua: | ||||
$ hg -R a parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ hg -R ua parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ rm -r ua | ||||
Testing clone -u <branch>: | ||||
$ hg clone -u stable a ua | ||||
updating to branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has both heads: | ||||
$ hg -R ua heads | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
Branch 'stable' is checked out: | ||||
$ hg -R ua parents | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
$ rm -r ua | ||||
Testing default checkout: | ||||
$ hg clone a ua | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has both heads: | ||||
$ hg -R ua heads | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
Branch 'default' is checked out: | ||||
$ hg -R ua parents | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
|
r17869 | Test clone with a branch named "@" (issue3677) | ||
|
r11806 | |||
|
r17869 | $ hg -R ua branch @ | ||
marked working directory as branch @ | ||||
$ hg -R ua commit -m 'created branch @' | ||||
$ hg clone ua atbranch | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R atbranch heads | ||||
changeset: 16:798b6d97153e | ||||
branch: @ | ||||
tag: tip | ||||
parent: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: created branch @ | ||||
changeset: 15:0aae7cf88f0d | ||||
branch: stable | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
$ hg -R atbranch parents | ||||
changeset: 12:f21241060d6a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: hacked default | ||||
$ rm -r ua atbranch | ||||
|
r11806 | |||
Testing #<branch>: | ||||
$ hg clone -u . a#stable ua | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 14 changesets with 14 changes to 3 files | ||||
|
r34662 | new changesets acb14030fe0a:0aae7cf88f0d | ||
|
r11806 | updating to branch stable | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6): | ||||
$ hg -R ua heads | ||||
changeset: 13:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 10:a7949464abda | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: test | ||||
Same revision checked out in repo a and ua: | ||||
$ hg -R a parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ hg -R ua parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ rm -r ua | ||||
Testing -u -r <branch>: | ||||
$ hg clone -u . -r stable a ua | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 14 changesets with 14 changes to 3 files | ||||
|
r34662 | new changesets acb14030fe0a:0aae7cf88f0d | ||
|
r11806 | updating to branch stable | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6): | ||||
$ hg -R ua heads | ||||
changeset: 13:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 10:a7949464abda | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: test | ||||
Same revision checked out in repo a and ua: | ||||
$ hg -R a parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ hg -R ua parents --template "{node|short}\n" | ||||
e8ece76546a6 | ||||
$ rm -r ua | ||||
Testing -r <branch>: | ||||
$ hg clone -r stable a ua | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 14 changesets with 14 changes to 3 files | ||||
|
r34662 | new changesets acb14030fe0a:0aae7cf88f0d | ||
|
r11806 | updating to branch stable | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6): | ||||
$ hg -R ua heads | ||||
changeset: 13:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
changeset: 10:a7949464abda | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: test | ||||
Branch 'stable' is checked out: | ||||
$ hg -R ua parents | ||||
changeset: 13:0aae7cf88f0d | ||||
branch: stable | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: another change for branch stable | ||||
$ rm -r ua | ||||
|
r12399 | Issue2267: Error in 1.6 hg.py: TypeError: 'NoneType' object is not | ||
iterable in addbranchrevs() | ||||
|
r11806 | |||
$ cat <<EOF > simpleclone.py | ||||
|
r40405 | > from mercurial import hg, ui as uimod | ||
> myui = uimod.ui.load() | ||||
|
r37686 | > repo = hg.repository(myui, b'a') | ||
> hg.clone(myui, {}, repo, dest=b"ua") | ||||
|
r11806 | > EOF | ||
|
r39743 | $ "$PYTHON" simpleclone.py | ||
|
r11806 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -r ua | ||||
|
r11839 | $ cat <<EOF > branchclone.py | ||
|
r40405 | > from mercurial import extensions, hg, ui as uimod | ||
> myui = uimod.ui.load() | ||||
|
r17135 | > extensions.loadall(myui) | ||
|
r40760 | > extensions.populateui(myui) | ||
|
r37686 | > repo = hg.repository(myui, b'a') | ||
|
r41881 | > hg.clone(myui, {}, repo, dest=b"ua", branch=[b"stable"]) | ||
|
r11839 | > EOF | ||
|
r11823 | |||
|
r39743 | $ "$PYTHON" branchclone.py | ||
|
r11839 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 14 changesets with 14 changes to 3 files | ||||
|
r34662 | new changesets acb14030fe0a:0aae7cf88f0d | ||
|
r11839 | updating to branch stable | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -r ua | ||||
|
r16847 | |||
r48579 | Local clones don't get confused by unusual experimental.evolution options | |||
$ hg clone \ | ||||
> --config experimental.evolution=allowunstable,allowdivergence,exchange \ | ||||
> a ua | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -r ua | ||||
$ hg clone \ | ||||
> --config experimental.evolution.createmarkers=no \ | ||||
> --config experimental.evolution.allowunstable=yes \ | ||||
> --config experimental.evolution.allowdivergence=yes \ | ||||
> --config experimental.evolution.exchange=yes \ | ||||
> a ua | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -r ua | ||||
|
r16847 | |||
|
r17756 | Test clone with special '@' bookmark: | ||
$ cd a | ||||
$ hg bookmark -r a7949464abda @ # branch point of stable from default | ||||
$ hg clone . ../i | ||||
|
r17882 | updating to bookmark @ | ||
|
r17756 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
$ hg id -i ../i | ||||
a7949464abda | ||||
|
r17882 | $ rm -r ../i | ||
$ hg bookmark -f -r stable @ | ||||
$ hg bookmarks | ||||
@ 15:0aae7cf88f0d | ||||
$ hg clone . ../i | ||||
updating to bookmark @ on branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg id -i ../i | ||||
0aae7cf88f0d | ||||
|
r17881 | $ cd "$TESTTMP" | ||
|
r17756 | |||
|
r16847 | Testing failures: | ||
$ mkdir fail | ||||
$ cd fail | ||||
No local source | ||||
$ hg clone a b | ||||
|
r46518 | abort: repository a not found | ||
|
r16847 | [255] | ||
|
r44389 | Invalid URL | ||
$ hg clone http://invalid:url/a b | ||||
abort: error: nonnumeric port: 'url' | ||||
|
r46443 | [100] | ||
|
r44389 | |||
|
r16847 | No remote source | ||
|
r23059 | #if windows | ||
|
r31008 | $ hg clone http://$LOCALIP:3121/a b | ||
|
r23059 | abort: error: * (glob) | ||
|
r46688 | [100] | ||
|
r23059 | #else | ||
|
r31008 | $ hg clone http://$LOCALIP:3121/a b | ||
|
r16847 | abort: error: *refused* (glob) | ||
|
r46443 | [100] | ||
|
r23059 | #endif | ||
|
r16847 | $ rm -rf b # work around bug with http clone | ||
|
r20008 | #if unix-permissions no-root | ||
|
r16847 | |||
Inaccessible source | ||||
$ mkdir a | ||||
$ chmod 000 a | ||||
$ hg clone a b | ||||
|
r40255 | abort: Permission denied: *$TESTTMP/fail/a/.hg* (glob) | ||
|
r16847 | [255] | ||
Inaccessible destination | ||||
$ hg init b | ||||
$ cd b | ||||
$ hg clone . ../a | ||||
|
r40255 | abort: Permission denied: *../a* (glob) | ||
|
r16847 | [255] | ||
$ cd .. | ||||
$ chmod 700 a | ||||
$ rm -r a b | ||||
#endif | ||||
|
r16898 | #if fifo | ||
|
r16847 | Source of wrong type | ||
|
r16898 | $ mkfifo a | ||
$ hg clone a b | ||||
|
r40255 | abort: $ENOTDIR$: *$TESTTMP/fail/a/.hg* (glob) | ||
|
r16898 | [255] | ||
$ rm a | ||||
#endif | ||||
|
r16847 | |||
Default destination, same directory | ||||
$ hg init q | ||||
$ hg clone q | ||||
destination directory: q | ||||
abort: destination 'q' is not empty | ||||
|
r46451 | [10] | ||
|
r16847 | |||
destination directory not empty | ||||
|
r17345 | $ mkdir a | ||
|
r16847 | $ echo stuff > a/a | ||
$ hg clone q a | ||||
abort: destination 'a' is not empty | ||||
|
r46451 | [10] | ||
|
r16847 | |||
|
r20008 | #if unix-permissions no-root | ||
|
r16847 | |||
leave existing directory in place after clone failure | ||||
$ hg init c | ||||
$ cd c | ||||
$ echo c > c | ||||
$ hg commit -A -m test | ||||
adding c | ||||
$ chmod -rx .hg/store/data | ||||
$ cd .. | ||||
$ mkdir d | ||||
$ hg clone c d 2> err | ||||
[255] | ||||
$ test -d d | ||||
$ test -d d/.hg | ||||
[1] | ||||
|
r17424 | re-enable perm to allow deletion | ||
|
r16847 | |||
$ chmod +rx c/.hg/store/data | ||||
#endif | ||||
$ cd .. | ||||
|
r20825 | |||
Test clone from the repository in (emulated) revlog format 0 (issue4203): | ||||
$ mkdir issue4203 | ||||
$ mkdir -p src/.hg | ||||
$ echo foo > src/foo | ||||
$ hg -R src add src/foo | ||||
$ hg -R src commit -m '#0' | ||||
$ hg -R src log -q | ||||
0:e1bab28bca43 | ||||
|
r41355 | $ hg -R src debugrevlog -c | egrep 'format|flags' | ||
format : 0 | ||||
flags : (none) | ||||
|
r42611 | $ hg root -R src -T json | sed 's|\\\\|\\|g' | ||
[ | ||||
{ | ||||
"hgpath": "$TESTTMP/src/.hg", | ||||
"reporoot": "$TESTTMP/src", | ||||
"storepath": "$TESTTMP/src/.hg" | ||||
} | ||||
] | ||||
|
r20825 | $ hg clone -U -q src dst | ||
$ hg -R dst log -q | ||||
0:e1bab28bca43 | ||||
|
r25761 | |||
Create repositories to test auto sharing functionality | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [extensions] | ||||
> share= | ||||
> EOF | ||||
$ hg init empty | ||||
$ hg init source1a | ||||
$ cd source1a | ||||
$ echo initial1 > foo | ||||
$ hg -q commit -A -m initial | ||||
$ echo second > foo | ||||
$ hg commit -m second | ||||
|
r20825 | $ cd .. | ||
|
r25761 | |||
$ hg init filteredrev0 | ||||
$ cd filteredrev0 | ||||
$ cat >> .hg/hgrc << EOF | ||||
> [experimental] | ||||
|
r34867 | > evolution.createmarkers=True | ||
|
r25761 | > EOF | ||
$ echo initial1 > foo | ||||
$ hg -q commit -A -m initial0 | ||||
$ hg -q up -r null | ||||
$ echo initial2 > foo | ||||
$ hg -q commit -A -m initial1 | ||||
$ hg debugobsolete c05d5c47a5cf81401869999f3d05f7d699d2b29a e082c1832e09a7d1e78b7fd49a592d372de854c8 | ||||
r43163 | 1 new obsolescence markers | |||
|
r33542 | obsoleted 1 changesets | ||
|
r25761 | $ cd .. | ||
$ hg -q clone --pull source1a source1b | ||||
$ cd source1a | ||||
$ hg bookmark bookA | ||||
$ echo 1a > foo | ||||
$ hg commit -m 1a | ||||
$ cd ../source1b | ||||
$ hg -q up -r 0 | ||||
$ echo head1 > foo | ||||
$ hg commit -m head1 | ||||
created new head | ||||
$ hg bookmark head1 | ||||
$ hg -q up -r 0 | ||||
$ echo head2 > foo | ||||
$ hg commit -m head2 | ||||
created new head | ||||
$ hg bookmark head2 | ||||
$ hg -q up -r 0 | ||||
$ hg branch branch1 | ||||
marked working directory as branch branch1 | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ echo branch1 > foo | ||||
$ hg commit -m branch1 | ||||
$ hg -q up -r 0 | ||||
$ hg branch branch2 | ||||
marked working directory as branch branch2 | ||||
$ echo branch2 > foo | ||||
$ hg commit -m branch2 | ||||
$ cd .. | ||||
$ hg init source2 | ||||
$ cd source2 | ||||
$ echo initial2 > foo | ||||
$ hg -q commit -A -m initial2 | ||||
$ echo second > foo | ||||
$ hg commit -m second | ||||
$ cd .. | ||||
Clone with auto share from an empty repo should not result in share | ||||
$ mkdir share | ||||
$ hg --config share.pool=share clone empty share-empty | ||||
(not using pooled storage: remote appears to be empty) | ||||
updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ ls share | ||||
$ test -d share-empty/.hg/store | ||||
$ test -f share-empty/.hg/sharedpath | ||||
[1] | ||||
Clone with auto share from a repo with filtered revision 0 should not result in share | ||||
$ hg --config share.pool=share clone filteredrev0 share-filtered | ||||
(not using pooled storage: unable to resolve identity of remote) | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r34662 | new changesets e082c1832e09 | ||
|
r25761 | updating to branch default | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Clone from repo with content should result in shared store being created | ||||
$ hg --config share.pool=share clone source1a share-dest1a | ||||
(sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 1 files | ||||
|
r34662 | new changesets b5f04eac9d8f:e5bfe23c0b47 | ||
|
r25761 | searching for changes | ||
no changes found | ||||
adding remote bookmark bookA | ||||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r25761 | |||
The shared repo should have been created | ||||
$ ls share | ||||
b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 | ||||
The destination should point to it | ||||
$ cat share-dest1a/.hg/sharedpath; echo | ||||
|
r35394 | $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg | ||
|
r25761 | |||
The destination should have bookmarks | ||||
$ hg -R share-dest1a bookmarks | ||||
bookA 2:e5bfe23c0b47 | ||||
The default path should be the remote, not the share | ||||
$ hg -R share-dest1a config paths.default | ||||
|
r35394 | $TESTTMP/source1a | ||
|
r25761 | |||
Clone with existing share dir should result in pull + share | ||||
$ hg --config share.pool=share clone source1b share-dest1b | ||||
(sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
adding remote bookmark head1 | ||||
adding remote bookmark head2 | ||||
r43167 | added 4 changesets with 4 changes to 1 files (+4 heads) | |||
|
r34662 | new changesets 4a8dc1ab4c13:6bacf4683960 | ||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r25761 | |||
$ ls share | ||||
b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 | ||||
$ cat share-dest1b/.hg/sharedpath; echo | ||||
|
r35394 | $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg | ||
|
r25761 | |||
We only get bookmarks from the remote, not everything in the share | ||||
$ hg -R share-dest1b bookmarks | ||||
head1 3:4a8dc1ab4c13 | ||||
head2 4:99f71071f117 | ||||
Default path should be source, not share. | ||||
$ hg -R share-dest1b config paths.default | ||||
|
r35394 | $TESTTMP/source1b | ||
|
r25761 | |||
|
r28632 | Checked out revision should be head of default branch | ||
$ hg -R share-dest1b log -r . | ||||
changeset: 4:99f71071f117 | ||||
bookmark: head2 | ||||
parent: 0:b5f04eac9d8f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: head2 | ||||
|
r25761 | Clone from unrelated repo should result in new share | ||
$ hg --config share.pool=share clone source2 share-dest2 | ||||
(sharing from new pooled repository 22aeff664783fd44c6d9b435618173c118c3448e) | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 1 files | ||||
|
r34662 | new changesets 22aeff664783:63cf6c3dba4a | ||
|
r28632 | searching for changes | ||
no changes found | ||||
|
r25761 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ ls share | ||||
22aeff664783fd44c6d9b435618173c118c3448e | ||||
b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 | ||||
remote naming mode works as advertised | ||||
$ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1a share-remote1a | ||||
(sharing from new pooled repository 195bb1fcdb595c14a6c13e0269129ed78f6debde) | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 1 files | ||||
|
r34662 | new changesets b5f04eac9d8f:e5bfe23c0b47 | ||
|
r25761 | searching for changes | ||
no changes found | ||||
adding remote bookmark bookA | ||||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r25761 | |||
$ ls shareremote | ||||
195bb1fcdb595c14a6c13e0269129ed78f6debde | ||||
$ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1b share-remote1b | ||||
(sharing from new pooled repository c0d4f83847ca2a873741feb7048a45085fd47c46) | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 6 changesets with 6 changes to 1 files (+4 heads) | ||||
|
r34662 | new changesets b5f04eac9d8f:6bacf4683960 | ||
|
r25761 | searching for changes | ||
no changes found | ||||
adding remote bookmark head1 | ||||
adding remote bookmark head2 | ||||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r25761 | |||
$ ls shareremote | ||||
195bb1fcdb595c14a6c13e0269129ed78f6debde | ||||
c0d4f83847ca2a873741feb7048a45085fd47c46 | ||||
request to clone a single revision is respected in sharing mode | ||||
$ hg --config share.pool=sharerevs clone -r 4a8dc1ab4c13 source1b share-1arev | ||||
(sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 1 files | ||||
|
r34662 | new changesets b5f04eac9d8f:4a8dc1ab4c13 | ||
|
r28632 | no changes found | ||
adding remote bookmark head1 | ||||
|
r25761 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R share-1arev log -G | ||||
@ changeset: 1:4a8dc1ab4c13 | ||||
| bookmark: head1 | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: head1 | ||||
| | ||||
o changeset: 0:b5f04eac9d8f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: initial | ||||
making another clone should only pull down requested rev | ||||
$ hg --config share.pool=sharerevs clone -r 99f71071f117 source1b share-1brev | ||||
(sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
adding remote bookmark head1 | ||||
adding remote bookmark head2 | ||||
r43167 | added 1 changesets with 1 changes to 1 files (+1 heads) | |||
|
r34662 | new changesets 99f71071f117 | ||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r25761 | |||
$ hg -R share-1brev log -G | ||||
|
r28632 | @ changeset: 2:99f71071f117 | ||
|
r25761 | | bookmark: head2 | ||
| tag: tip | ||||
| parent: 0:b5f04eac9d8f | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: head2 | ||||
| | ||||
|
r28632 | | o changeset: 1:4a8dc1ab4c13 | ||
|
r25761 | |/ bookmark: head1 | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: head1 | ||||
| | ||||
o changeset: 0:b5f04eac9d8f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: initial | ||||
Request to clone a single branch is respected in sharing mode | ||||
$ hg --config share.pool=sharebranch clone -b branch1 source1b share-1bbranch1 | ||||
(sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 1 files | ||||
|
r34662 | new changesets b5f04eac9d8f:5f92a6c1a1b1 | ||
|
r28632 | no changes found | ||
|
r25761 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R share-1bbranch1 log -G | ||||
o changeset: 1:5f92a6c1a1b1 | ||||
| branch: branch1 | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: branch1 | ||||
| | ||||
@ changeset: 0:b5f04eac9d8f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: initial | ||||
$ hg --config share.pool=sharebranch clone -b branch2 source1b share-1bbranch2 | ||||
(sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
|
r34662 | new changesets 6bacf4683960 | ||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r25761 | |||
$ hg -R share-1bbranch2 log -G | ||||
o changeset: 2:6bacf4683960 | ||||
| branch: branch2 | ||||
| tag: tip | ||||
| parent: 0:b5f04eac9d8f | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: branch2 | ||||
| | ||||
| o changeset: 1:5f92a6c1a1b1 | ||||
|/ branch: branch1 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: branch1 | ||||
| | ||||
@ changeset: 0:b5f04eac9d8f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: initial | ||||
-U is respected in share clone mode | ||||
$ hg --config share.pool=share clone -U source1a share-1anowc | ||||
(sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||||
searching for changes | ||||
no changes found | ||||
adding remote bookmark bookA | ||||
|
r45218 | $ ls -A share-1anowc | ||
.hg | ||||
|
r26026 | |||
Test that auto sharing doesn't cause failure of "hg clone local remote" | ||||
$ cd $TESTTMP | ||||
$ hg -R a id -r 0 | ||||
acb14030fe0a | ||||
$ hg id -R remote -r 0 | ||||
|
r46518 | abort: repository remote not found | ||
|
r26026 | [255] | ||
|
r48732 | $ hg --config share.pool=share -q clone a ssh://user@dummy/remote | ||
|
r26026 | $ hg -R remote id -r 0 | ||
acb14030fe0a | ||||
|
r28289 | |||
Cloning into pooled storage doesn't race (issue5104) | ||||
$ HGPOSTLOCKDELAY=2.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace1 > race1.log 2>&1 & | ||||
$ HGPRELOCKDELAY=1.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace2 > race2.log 2>&1 | ||||
$ wait | ||||
$ hg -R share-destrace1 log -r tip | ||||
changeset: 2:e5bfe23c0b47 | ||||
bookmark: bookA | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 1a | ||||
$ hg -R share-destrace2 log -r tip | ||||
changeset: 2:e5bfe23c0b47 | ||||
bookmark: bookA | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 1a | ||||
|
r30120 | One repo should be new, the other should be shared from the pool. We | ||
don't care which is which, so we just make sure we always print the | ||||
one containing "new pooled" first, then one one containing "existing | ||||
pooled". | ||||
|
r30121 | $ (grep 'new pooled' race1.log > /dev/null && cat race1.log || cat race2.log) | grep -v lock | ||
|
r28289 | (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 1 files | ||||
|
r34662 | new changesets b5f04eac9d8f:e5bfe23c0b47 | ||
|
r28289 | searching for changes | ||
no changes found | ||||
adding remote bookmark bookA | ||||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r28289 | |||
|
r30121 | $ (grep 'existing pooled' race1.log > /dev/null && cat race1.log || cat race2.log) | grep -v lock | ||
|
r28289 | (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1) | ||
searching for changes | ||||
no changes found | ||||
adding remote bookmark bookA | ||||
|
r28632 | updating working directory | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r33726 | |||
SEC: check for unsafe ssh url | ||||
|
r33732 | $ cat >> $HGRCPATH << EOF | ||
> [ui] | ||||
> ssh = sh -c "read l; read l; read l" | ||||
> EOF | ||||
|
r33726 | $ hg clone 'ssh://-oProxyCommand=touch${IFS}owned/path' | ||
abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' | ||||
[255] | ||||
$ hg clone 'ssh://%2DoProxyCommand=touch${IFS}owned/path' | ||||
abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' | ||||
[255] | ||||
|
r33733 | $ hg clone 'ssh://fakehost|touch%20owned/path' | ||
|
r46518 | abort: no suitable response from remote hg | ||
|
r33726 | [255] | ||
|
r33733 | $ hg clone 'ssh://fakehost%7Ctouch%20owned/path' | ||
|
r46518 | abort: no suitable response from remote hg | ||
|
r33726 | [255] | ||
$ hg clone 'ssh://-oProxyCommand=touch owned%20foo@example.com/nonexistent/path' | ||||
abort: potentially unsafe url: 'ssh://-oProxyCommand=touch owned foo@example.com/nonexistent/path' | ||||
[255] | ||||
|
r33732 | |||
#if windows | ||||
$ hg clone "ssh://%26touch%20owned%20/" --debug | ||||
running sh -c "read l; read l; read l" "&touch owned " "hg -R . serve --stdio" | ||||
|
r40212 | sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !) | ||
|
r33732 | sending hello command | ||
sending between command | ||||
|
r46687 | abort: no suitable response from remote hg | ||
|
r33732 | [255] | ||
$ hg clone "ssh://example.com:%26touch%20owned%20/" --debug | ||||
running sh -c "read l; read l; read l" -p "&touch owned " example.com "hg -R . serve --stdio" | ||||
|
r40212 | sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !) | ||
|
r33732 | sending hello command | ||
sending between command | ||||
|
r46687 | abort: no suitable response from remote hg | ||
|
r33732 | [255] | ||
#else | ||||
$ hg clone "ssh://%3btouch%20owned%20/" --debug | ||||
running sh -c "read l; read l; read l" ';touch owned ' 'hg -R . serve --stdio' | ||||
|
r40212 | sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !) | ||
|
r33732 | sending hello command | ||
sending between command | ||||
|
r46518 | abort: no suitable response from remote hg | ||
|
r33732 | [255] | ||
$ hg clone "ssh://example.com:%3btouch%20owned%20/" --debug | ||||
running sh -c "read l; read l; read l" -p ';touch owned ' example.com 'hg -R . serve --stdio' | ||||
|
r40212 | sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !) | ||
|
r33732 | sending hello command | ||
sending between command | ||||
|
r46518 | abort: no suitable response from remote hg | ||
|
r33732 | [255] | ||
#endif | ||||
$ hg clone "ssh://v-alid.example.com/" --debug | ||||
running sh -c "read l; read l; read l" v-alid\.example\.com ['"]hg -R \. serve --stdio['"] (re) | ||||
|
r40212 | sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !) | ||
|
r33732 | sending hello command | ||
sending between command | ||||
|
r46518 | abort: no suitable response from remote hg | ||
|
r33732 | [255] | ||
|
r33726 | We should not have created a file named owned - if it exists, the | ||
attack succeeded. | ||||
$ if test -f owned; then echo 'you got owned'; fi | ||||
|
r34886 | |||
Cloning without fsmonitor enabled does not print a warning for small repos | ||||
$ hg clone a fsmonitor-default | ||||
updating to bookmark @ on branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Lower the warning threshold to simulate a large repo | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [fsmonitor] | ||||
> warn_update_file_count = 2 | ||||
|
r46034 | > warn_update_file_count_rust = 2 | ||
|
r34886 | > EOF | ||
We should see a warning about no fsmonitor on supported platforms | ||||
#if linuxormacos no-fsmonitor | ||||
$ hg clone a nofsmonitor | ||||
updating to bookmark @ on branch stable | ||||
(warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#else | ||||
$ hg clone a nofsmonitor | ||||
updating to bookmark @ on branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
We should not see warning about fsmonitor when it is enabled | ||||
#if fsmonitor | ||||
$ hg clone a fsmonitor-enabled | ||||
updating to bookmark @ on branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
We can disable the fsmonitor warning | ||||
$ hg --config fsmonitor.warn_when_unused=false clone a fsmonitor-disable-warning | ||||
updating to bookmark @ on branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Loaded fsmonitor but disabled in config should still print warning | ||||
#if linuxormacos fsmonitor | ||||
$ hg --config fsmonitor.mode=off clone a fsmonitor-mode-off | ||||
updating to bookmark @ on branch stable | ||||
(warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") (fsmonitor !) | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
Warning not printed if working directory isn't empty | ||||
$ hg -q clone a fsmonitor-update | ||||
(warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") (?) | ||||
$ cd fsmonitor-update | ||||
$ hg up acb14030fe0a | ||||
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
(leaving bookmark @) | ||||
$ hg up cf0fe1914066 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
`hg update` from null revision also prints | ||||
$ hg up null | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
#if linuxormacos no-fsmonitor | ||||
$ hg up cf0fe1914066 | ||||
(warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#else | ||||
$ hg up cf0fe1914066 | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | ||||
$ cd .. | ||||