$ cp "$TESTDIR"/printenv.py .
Setting up test
$ hg init test
$ cd test
$ echo 0 > afile
$ hg add afile
$ hg commit -m "0.0" -d "1000000 0"
$ echo 1 >> afile
$ hg commit -m "0.1" -d "1000000 0"
$ echo 2 >> afile
$ hg commit -m "0.2" -d "1000000 0"
$ echo 3 >> afile
$ hg commit -m "0.3" -d "1000000 0"
$ hg update -C 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo 1 >> afile
$ hg commit -m "1.1" -d "1000000 0"
created new head
$ echo 2 >> afile
$ hg commit -m "1.2" -d "1000000 0"
$ echo "a line" > fred
$ echo 3 >> afile
$ hg add fred
$ hg commit -m "1.3" -d "1000000 0"
$ hg mv afile adifferentfile
$ hg commit -m "1.3m" -d "1000000 0"
$ hg update -C 3
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg mv afile anotherfile
$ hg commit -m "0.3m" -d "1000000 0"
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
4 files, 9 changesets, 7 total revisions
$ cd ..
$ hg init empty
Bundle --all
$ hg -R test bundle --all all.hg
9 changesets found
Bundle test to full.hg
$ hg -R test bundle full.hg empty
searching for changes
9 changesets found
Unbundle full.hg in test
$ hg -R test unbundle full.hg
adding changesets
adding manifests
adding file changes
added 0 changesets with 0 changes to 4 files
(run 'hg update' to get a working copy)
Verify empty
$ hg -R empty heads
$ hg -R empty verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
0 files, 0 changesets, 0 total revisions
Pull full.hg into test (using --cwd)
$ hg --cwd test pull ../full.hg
pulling from ../full.hg
searching for changes
no changes found
Pull full.hg into empty (using --cwd)
$ hg --cwd empty pull ../full.hg
pulling from ../full.hg
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
Rollback empty
$ hg -R empty rollback
rolling back to revision -1 (undo pull)
Pull full.hg into empty again (using --cwd)
$ hg --cwd empty pull ../full.hg
pulling from ../full.hg
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
Pull full.hg into test (using -R)
$ hg -R test pull full.hg
pulling from full.hg
searching for changes
no changes found
Pull full.hg into empty (using -R)
$ hg -R empty pull full.hg
pulling from full.hg
searching for changes
no changes found
Rollback empty
$ hg -R empty rollback
rolling back to revision -1 (undo pull)
Pull full.hg into empty again (using -R)
$ hg -R empty pull full.hg
pulling from full.hg
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
Log -R full.hg in fresh empty
$ rm -r empty
$ hg init empty
$ cd empty
$ hg -R bundle://../full.hg log
changeset: 8:088ff9d6e1e1
tag: tip
parent: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3m
changeset: 7:27f57c869697
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3m
changeset: 6:1e3f6b843bd6
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3
changeset: 5:024e4e7df376
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.2
changeset: 4:5f4f3ceb285e
parent: 0:5649c9d34dd8
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.1
changeset: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3
changeset: 2:d62976ca1e50
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.2
changeset: 1:10b2180f755b
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.1
changeset: 0:5649c9d34dd8
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.0
Pull ../full.hg into empty (with hook)
$ echo '[hooks]' >> .hg/hgrc
$ echo 'changegroup = python ../printenv.py changegroup' >> .hg/hgrc
doesn't work (yet ?)
hg -R bundle://../full.hg verify
$ hg pull bundle://../full.hg
changegroup hook: HG_NODE=5649c9d34dd87d0ecb5fd39672128376e83b22e1 HG_SOURCE=pull HG_URL=bundle:../full.hg
pulling from bundle://../full.hg
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
Rollback empty
$ hg rollback
rolling back to revision -1 (undo pull)
$ cd ..
Log -R bundle:empty+full.hg
$ hg -R bundle:empty+full.hg log --template="{rev} "; echo ""
8 7 6 5 4 3 2 1 0
Pull full.hg into empty again (using -R; with hook)
$ hg -R empty pull full.hg
changegroup hook: HG_NODE=5649c9d34dd87d0ecb5fd39672128376e83b22e1 HG_SOURCE=pull HG_URL=bundle:empty+full.hg
pulling from full.hg
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
Create partial clones
$ rm -r empty
$ hg init empty
$ hg clone -r 3 test partial
requesting all changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 1 files
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg clone partial partial2
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd partial
Log -R full.hg in partial
$ hg -R bundle://../full.hg log
changeset: 8:088ff9d6e1e1
tag: tip
parent: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3m
changeset: 7:27f57c869697
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3m
changeset: 6:1e3f6b843bd6
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3
changeset: 5:024e4e7df376
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.2
changeset: 4:5f4f3ceb285e
parent: 0:5649c9d34dd8
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.1
changeset: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3
changeset: 2:d62976ca1e50
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.2
changeset: 1:10b2180f755b
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.1
changeset: 0:5649c9d34dd8
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.0
Incoming full.hg in partial
$ hg incoming bundle://../full.hg
comparing with bundle://../full.hg
searching for changes
changeset: 4:5f4f3ceb285e
parent: 0:5649c9d34dd8
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.1
changeset: 5:024e4e7df376
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.2
changeset: 6:1e3f6b843bd6
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3
changeset: 7:27f57c869697
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3m
changeset: 8:088ff9d6e1e1
tag: tip
parent: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3m
Outgoing -R full.hg vs partial2 in partial
$ hg -R bundle://../full.hg outgoing ../partial2
comparing with ../partial2
searching for changes
changeset: 4:5f4f3ceb285e
parent: 0:5649c9d34dd8
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.1
changeset: 5:024e4e7df376
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.2
changeset: 6:1e3f6b843bd6
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3
changeset: 7:27f57c869697
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3m
changeset: 8:088ff9d6e1e1
tag: tip
parent: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3m
Outgoing -R does-not-exist.hg vs partial2 in partial
$ hg -R bundle://../does-not-exist.hg outgoing ../partial2
abort: No such file or directory: ../does-not-exist.hg
$ cd ..
Direct clone from bundle (all-history)
$ hg clone full.hg full-clone
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R full-clone heads
changeset: 8:088ff9d6e1e1
tag: tip
parent: 3:ac69c658229d
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 0.3m
changeset: 7:27f57c869697
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1.3m
$ rm -r full-clone
test for http://mercurial.selenic.com/bts/issue216
Unbundle incremental bundles into fresh empty in one go
$ rm -r empty
$ hg init empty
$ hg -R test bundle --base null -r 0 ../0.hg
1 changesets found
$ hg -R test bundle --base 0 -r 1 ../1.hg
1 changesets found
$ hg -R empty unbundle -u ../0.hg ../1.hg
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
test for 540d1059c802
test for 540d1059c802
$ hg init orig
$ cd orig
$ echo foo > foo
$ hg add foo
$ hg ci -m 'add foo'
$ hg clone . ../copy
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg tag foo
$ cd ../copy
$ echo >> foo
$ hg ci -m 'change foo'
$ hg bundle ../bundle.hg ../orig
searching for changes
1 changesets found
$ cd ../orig
$ hg incoming ../bundle.hg
comparing with ../bundle.hg
searching for changes
changeset: 2:ed1b79f46b9a
tag: tip
parent: 0:bbd179dfa0a7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: change foo
$ cd ..
test for http://mercurial.selenic.com/bts/issue1144
test that verify bundle does not traceback
partial history bundle, fails w/ unkown parent
$ hg -R bundle.hg verify
abort: 00changelog.i@bbd179dfa0a7: unknown parent!
full history bundle, refuses to verify non-local repo
$ hg -R all.hg verify
abort: cannot verify bundle or remote repos
but, regular verify must continue to work
$ hg -R orig verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
2 files, 2 changesets, 2 total revisions
diff against bundle
$ hg init b
$ cd b
$ hg -R ../all.hg diff -r tip
diff -r 088ff9d6e1e1 anotherfile
--- a/anotherfile Mon Jan 12 13:46:40 1970 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-0
-1
-2
-3
$ cd ..
bundle single branch
$ hg init branchy
$ cd branchy
$ echo a >a
$ hg ci -Ama
adding a
$ echo b >b
$ hg ci -Amb
adding b
$ echo b1 >b1
$ hg ci -Amb1
adding b1
$ hg up 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo c >c
$ hg ci -Amc
adding c
created new head
$ echo c1 >c1
$ hg ci -Amc1
adding c1
$ hg clone -q .#tip part
== bundling via incoming
$ hg in -R part --bundle incoming.hg --template "{node}\n" .
comparing with .
searching for changes
d2ae7f538514cd87c17547b0de4cea71fe1af9fb
5ece8e77363e2b5269e27c66828b72da29e4341a
== bundling
$ hg bundle bundle.hg part --debug
searching for changes
common changesets up to c0025332f9ed
2 changesets found
list of changesets:
d2ae7f538514cd87c17547b0de4cea71fe1af9fb
5ece8e77363e2b5269e27c66828b72da29e4341a
bundling changes: 0 chunks
bundling changes: 1 chunks
bundling changes: 2 chunks
bundling changes: 3 chunks
bundling changes: 4 chunks
bundling changes: 5 chunks
bundling changes: 6 chunks
bundling manifests: 0 chunks
bundling manifests: 1 chunks
bundling manifests: 2 chunks
bundling manifests: 3 chunks
bundling manifests: 4 chunks
bundling manifests: 5 chunks
bundling manifests: 6 chunks
bundling files: b 0 chunks
bundling files: b 1 chunks
bundling files: b 2 chunks
bundling files: b 3 chunks
bundling files: b1 4 chunks
bundling files: b1 5 chunks
bundling files: b1 6 chunks
bundling files: b1 7 chunks