--- a/mercurial/hg.py Sat Mar 12 18:29:02 2011 +0100
+++ b/mercurial/hg.py Sun Mar 13 12:24:17 2011 +0100
@@ -9,7 +9,7 @@
from i18n import _
from lock import release
from node import hex, nullid, nullrev, short
-import localrepo, bundlerepo, httprepo, sshrepo, statichttprepo
+import localrepo, bundlerepo, httprepo, sshrepo, statichttprepo, bookmarks
import lock, util, extensions, error, encoding, node
import cmdutil, discovery, url
import merge as mergemod
@@ -366,6 +366,21 @@
dest_repo.ui.status(_("updating to branch %s\n") % bn)
_update(dest_repo, uprev)
+ # clone all bookmarks
+ if dest_repo.local() and src_repo.capable("pushkey"):
+ rb = src_repo.listkeys('bookmarks')
+ for k, n in rb.iteritems():
+ try:
+ m = dest_repo.lookup(n)
+ dest_repo._bookmarks[k] = m
+ except:
+ pass
+ if rb:
+ bookmarks.write(dest_repo)
+ elif src_repo.local() and dest_repo.capable("pushkey"):
+ for k, n in src_repo._bookmarks.iteritems():
+ dest_repo.pushkey('bookmarks', k, '', hex(n))
+
return src_repo, dest_repo
finally:
release(src_lock, dest_lock)
--- a/tests/test-bookmarks-pushpull.t Sat Mar 12 18:29:02 2011 +0100
+++ b/tests/test-bookmarks-pushpull.t Sun Mar 13 12:24:17 2011 +0100
@@ -176,5 +176,19 @@
no changes found
not updating divergent bookmark X
importing bookmark Z
+ $ hg clone http://localhost:$HGPORT/ cloned-bookmarks
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 3 changes to 3 files (+1 heads)
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R cloned-bookmarks bookmarks
+ X 1:9b140be10808
+ Y 0:4e3505fd9583
+ Z 2:0d2164f0ce0d
+ foo -1:000000000000
+ foobar -1:000000000000
$ kill `cat ../hg.pid`
--- a/tests/test-bookmarks.t Sat Mar 12 18:29:02 2011 +0100
+++ b/tests/test-bookmarks.t Sun Mar 13 12:24:17 2011 +0100
@@ -244,3 +244,47 @@
$ hg id
db815d6d32e6 tip Y/Z/x y
+
+test clone
+
+ $ hg bookmarks
+ X2 1:925d80f479bb
+ Y 2:db815d6d32e6
+ * Z 2:db815d6d32e6
+ x y 2:db815d6d32e6
+ $ hg clone . cloned-bookmarks
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R cloned-bookmarks bookmarks
+ X2 1:925d80f479bb
+ Y 2:db815d6d32e6
+ Z 2:db815d6d32e6
+ x y 2:db815d6d32e6
+
+test clone with pull protocol
+
+ $ hg clone --pull . cloned-bookmarks-pull
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 3 changes to 3 files (+1 heads)
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R cloned-bookmarks-pull bookmarks
+ X2 1:925d80f479bb
+ Y 2:db815d6d32e6
+ Z 2:db815d6d32e6
+ x y 2:db815d6d32e6
+
+test clone with a specific revision
+
+ $ hg clone -r 925d80 . cloned-bookmarks-rev
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 2 files
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R cloned-bookmarks-rev bookmarks
+ X2 1:925d80f479bb
--- a/tests/test-init.t Sat Mar 12 18:29:02 2011 +0100
+++ b/tests/test-init.t Sun Mar 13 12:24:17 2011 +0100
@@ -199,3 +199,17 @@
store
fncache
dotencode
+
+clone bookmarks
+
+ $ hg -R local bookmark test
+ $ hg -R local bookmarks
+ * test 0:08b9e9f63b32
+ $ hg clone -e "python ./dummyssh" local ssh://user@dummy/remote-bookmarks
+ searching for changes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 1 changesets with 1 changes to 1 files
+ $ hg -R remote-bookmarks bookmarks
+ test 0:08b9e9f63b32
--- a/tests/test-ssh.t Sat Mar 12 18:29:02 2011 +0100
+++ b/tests/test-ssh.t Sun Mar 13 12:24:17 2011 +0100
@@ -263,6 +263,22 @@
summary: z
+clone bookmarks
+
+ $ hg -R ../remote bookmark test
+ $ hg -R ../remote bookmarks
+ * test 2:6c0482d977a3
+ $ hg clone -e "python ../dummyssh" ssh://user@dummy/remote local-bookmarks
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 5 changes to 4 files (+1 heads)
+ updating to branch default
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R local-bookmarks bookmarks
+ test 2:6c0482d977a3
+
passwords in ssh urls are not supported
$ hg push ssh://user:erroneouspwd@dummy/remote
@@ -289,3 +305,4 @@
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
+ Got arguments 1:user@dummy 2:hg -R remote serve --stdio