test-clone.t
567 lines
| 11.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-clone.t
Adrian Buehlmann
|
r11806 | Prepare repo a: | ||
Martin Geisler
|
r13956 | $ hg init a | ||
Adrian Buehlmann
|
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: | ||||
Mads Kiilerich
|
r15522 | $ python -c 'file("data1", "wb").write("".join("%s\n" % x for x in range(10000)))' | ||
Adrian Buehlmann
|
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'): | ||||
$ 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 | ||||
Default operation: | ||||
$ hg clone . ../b | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd ../b | ||||
$ cat a | ||||
a | ||||
$ hg verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
2 files, 11 changesets, 11 total revisions | ||||
Adrian Buehlmann
|
r13058 | Invalid dest '' must abort: | ||
$ hg clone . '' | ||||
FUJIWARA Katsunori
|
r17159 | abort: empty destination path is not valid | ||
Adrian Buehlmann
|
r13058 | [255] | ||
Adrian Buehlmann
|
r11806 | No update, with debug option: | ||
Mads Kiilerich
|
r16971 | #if hardlink | ||
Adrian Buehlmann
|
r11806 | $ hg --debug clone -U . ../c | ||
linked 8 files | ||||
Pierre-Yves David
|
r17293 | listing keys for "bookmarks" | ||
Mads Kiilerich
|
r16971 | #else | ||
$ hg --debug clone -U . ../c | ||||
copied 8 files | ||||
Adrian Buehlmann
|
r17307 | listing keys for "bookmarks" | ||
Mads Kiilerich
|
r16971 | #endif | ||
Adrian Buehlmann
|
r11806 | $ cd ../c | ||
$ 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 | ||||
2 files, 11 changesets, 11 total revisions | ||||
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 | ||||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r11806 | |||
Check that path aliases are expanded: | ||||
$ hg clone -q -U --config 'paths.foobar=a#0' foobar f | ||||
$ hg -R f showconfig paths.default | ||||
Mads Kiilerich
|
r15520 | $TESTTMP/a#0 (glob) | ||
Adrian Buehlmann
|
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 | ||||
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 | ||||
2 files, 11 changesets, 11 total revisions | ||||
Adrian Buehlmann
|
r13058 | Invalid dest '' with --pull must abort (issue2528): | ||
$ hg clone --pull a '' | ||||
FUJIWARA Katsunori
|
r17159 | abort: empty destination path is not valid | ||
Adrian Buehlmann
|
r13058 | [255] | ||
Adrian Buehlmann
|
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 | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Adrian Buehlmann
|
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 | ||||
Matt Mackall
|
r12316 | [255] | ||
Adrian Buehlmann
|
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) | ||||
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 | ||||
$ rm -r ua | ||||
Testing #<branch>: | ||||
$ hg clone -u . a#stable ua | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 14 changesets with 14 changes to 3 files | ||||
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 | ||||
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 | ||||
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 | ||||
Martin Geisler
|
r12399 | Issue2267: Error in 1.6 hg.py: TypeError: 'NoneType' object is not | ||
iterable in addbranchrevs() | ||||
Adrian Buehlmann
|
r11806 | |||
$ cat <<EOF > simpleclone.py | ||||
> from mercurial import ui, hg | ||||
> myui = ui.ui() | ||||
> repo = hg.repository(myui, 'a') | ||||
Peter Arrenbrecht
|
r14553 | > hg.clone(myui, {}, repo, dest="ua") | ||
Adrian Buehlmann
|
r11806 | > EOF | ||
$ python simpleclone.py | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -r ua | ||||
Martin Geisler
|
r11839 | $ cat <<EOF > branchclone.py | ||
Bryan O'Sullivan
|
r17135 | > from mercurial import ui, hg, extensions | ||
Martin Geisler
|
r11839 | > myui = ui.ui() | ||
Bryan O'Sullivan
|
r17135 | > extensions.loadall(myui) | ||
Martin Geisler
|
r11839 | > repo = hg.repository(myui, 'a') | ||
Peter Arrenbrecht
|
r14553 | > hg.clone(myui, {}, repo, dest="ua", branch=["stable",]) | ||
Martin Geisler
|
r11839 | > EOF | ||
Martin Geisler
|
r11823 | |||
Martin Geisler
|
r11839 | $ python branchclone.py | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 14 changesets with 14 changes to 3 files | ||||
updating to branch stable | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -r ua | ||||
Adrian Buehlmann
|
r16847 | |||
Testing failures: | ||||
$ mkdir fail | ||||
$ cd fail | ||||
No local source | ||||
$ hg clone a b | ||||
abort: repository a not found! | ||||
[255] | ||||
No remote source | ||||
$ hg clone http://127.0.0.1:3121/a b | ||||
abort: error: *refused* (glob) | ||||
[255] | ||||
$ rm -rf b # work around bug with http clone | ||||
#if unix-permissions | ||||
Inaccessible source | ||||
$ mkdir a | ||||
$ chmod 000 a | ||||
$ hg clone a b | ||||
abort: repository a not found! | ||||
[255] | ||||
Inaccessible destination | ||||
$ hg init b | ||||
$ cd b | ||||
$ hg clone . ../a | ||||
abort: Permission denied: ../a | ||||
[255] | ||||
$ cd .. | ||||
$ chmod 700 a | ||||
$ rm -r a b | ||||
#endif | ||||
Mads Kiilerich
|
r16898 | #if fifo | ||
Adrian Buehlmann
|
r16847 | Source of wrong type | ||
Mads Kiilerich
|
r16898 | $ mkfifo a | ||
$ hg clone a b | ||||
Adrian Buehlmann
|
r16847 | abort: repository a not found! | ||
Mads Kiilerich
|
r16898 | [255] | ||
$ rm a | ||||
#endif | ||||
Adrian Buehlmann
|
r16847 | |||
Default destination, same directory | ||||
$ hg init q | ||||
$ hg clone q | ||||
destination directory: q | ||||
abort: destination 'q' is not empty | ||||
[255] | ||||
destination directory not empty | ||||
Mads Kiilerich
|
r17345 | $ mkdir a | ||
Adrian Buehlmann
|
r16847 | $ echo stuff > a/a | ||
$ hg clone q a | ||||
abort: destination 'a' is not empty | ||||
[255] | ||||
#if unix-permissions | ||||
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] | ||||
reenable perm to allow deletion | ||||
$ chmod +rx c/.hg/store/data | ||||
#endif | ||||
$ cd .. | ||||