Mercurial > hg-stable
changeset 15613:2fad18f15409
bookmarks: shadow divergent bookmarks of foo with foo@n
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Tue, 06 Dec 2011 14:17:33 -0600 |
parents | 6f2eee68f6a5 |
children | 260a6449d83a |
files | mercurial/bookmarks.py tests/test-bookmarks-pushpull.t |
diffstat | 2 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bookmarks.py Tue Dec 06 13:21:45 2011 +0100 +++ b/mercurial/bookmarks.py Tue Dec 06 14:17:33 2011 -0600 @@ -155,7 +155,9 @@ d = {} for k, v in marks.iteritems(): - d[k] = hex(v) + # don't expose local divergent bookmarks + if '@' not in k and not k.endswith('@'): + d[k] = hex(v) return d def pushbookmark(repo, key, old, new): @@ -192,8 +194,14 @@ changed = True ui.status(_("updating bookmark %s\n") % k) else: - ui.warn(_("not updating divergent" - " bookmark %s\n") % k) + for x in range(1, 100): + n = '%s@%d' % (k, x) + if n not in repo._bookmarks: + break + repo._bookmarks[n] = cr.node() + changed = True + ui.warn(_("divergent bookmark %s stored as %s\n") % (k, n)) + if changed: write(repo)
--- a/tests/test-bookmarks-pushpull.t Tue Dec 06 13:21:45 2011 +0100 +++ b/tests/test-bookmarks-pushpull.t Tue Dec 06 14:17:33 2011 -0600 @@ -117,10 +117,11 @@ adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) - not updating divergent bookmark X + divergent bookmark X stored as X@1 (run 'hg heads' to see heads, 'hg merge' to merge) $ hg book * X 1:9b140be10808 + X@1 2:0d2164f0ce0d Y 0:4e3505fd9583 foo -1:000000000000 foobar -1:000000000000 @@ -175,7 +176,7 @@ $ hg pull -B Z http://localhost:$HGPORT/ pulling from http://localhost:$HGPORT/ no changes found - not updating divergent bookmark X + divergent bookmark X stored as X@1 importing bookmark Z $ hg clone http://localhost:$HGPORT/ cloned-bookmarks requesting all changes