Mercurial > hg-stable
changeset 17770:6c81b8ebf66e
bookmarks: when @ bookmark diverges, don't double the @ sign (BC)
This changeset treats the bookmark "@" as a special case for the naming of
divergent bookmarks, as per the tables below. For the <no alias> case, the
actual suffix will vary, depending on what suffixes are already in use.
Before:
Bookmark | Remote | Divergent Bookmark
--------------------------------------
foo | bar | foo@bar
foo | <no alias> | foo@1
@ | bar | @@bar
@ | <no alias> | @@1
After:
Bookmark | Remote | Divergent Bookmark
--------------------------------------
foo | bar | foo@bar
foo | <no alias> | foo@1
@ | bar | @bar
@ | <no alias> | @1
This case is likely to be more common now that 92980a8dfdfe has made the "@"
bookmark have special meaning to clone.
The change in behavior was discussed on the mailing list in the thread below:
http://markmail.org/thread/rwedgxp7le5j2h2f
author | David M. Carr <david@carrclan.us> |
---|---|
date | Mon, 15 Oct 2012 23:54:54 -0400 |
parents | 8672e615d81c |
children | dcfa526b180b |
files | mercurial/bookmarks.py tests/test-bookmarks-pushpull.t |
diffstat | 2 files changed, 26 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bookmarks.py Tue Oct 16 16:04:28 2012 +0200 +++ b/mercurial/bookmarks.py Mon Oct 15 23:54:54 2012 -0400 @@ -214,16 +214,20 @@ changed = True ui.status(_("updating bookmark %s\n") % k) else: + if k == '@': + kd = '' + else: + kd = k # find a unique @ suffix for x in range(1, 100): - n = '%s@%d' % (k, x) + n = '%s@%d' % (kd, x) if n not in repo._bookmarks: break # try to use an @pathalias suffix # if an @pathalias already exists, we overwrite (update) it for p, u in ui.configitems("paths"): if path == u: - n = '%s@%s' % (k, p) + n = '%s@%s' % (kd, p) repo._bookmarks[n] = cr.node() changed = True
--- a/tests/test-bookmarks-pushpull.t Tue Oct 16 16:04:28 2012 +0200 +++ b/tests/test-bookmarks-pushpull.t Mon Oct 15 23:54:54 2012 -0400 @@ -111,8 +111,10 @@ $ echo c1 > f1 $ hg ci -Am1 adding f1 + $ hg book -f @ $ hg book -f X $ hg book + @ 1:0d2164f0ce0d * X 1:0d2164f0ce0d Y 0:4e3505fd9583 Z 1:0d2164f0ce0d @@ -124,8 +126,10 @@ $ echo c2 > f2 $ hg ci -Am2 adding f2 + $ hg book -f @ $ hg book -f X $ hg book + @ 1:9b140be10808 * X 1:9b140be10808 Y 0:4e3505fd9583 Z 0:4e3505fd9583 @@ -141,8 +145,11 @@ added 1 changesets with 1 changes to 1 files (+1 heads) divergent bookmark X stored as X@foo updating bookmark Z + divergent bookmark @ stored as @foo (run 'hg heads' to see heads, 'hg merge' to merge) $ hg book + @ 1:9b140be10808 + @foo 2:0d2164f0ce0d * X 1:9b140be10808 X@foo 2:0d2164f0ce0d Y 0:4e3505fd9583 @@ -157,6 +164,7 @@ adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) $ hg -R ../a book + @ 1:0d2164f0ce0d * X 1:0d2164f0ce0d Y 0:4e3505fd9583 Z 1:0d2164f0ce0d @@ -177,6 +185,7 @@ added 1 changesets with 1 changes to 1 files (+1 heads) updating bookmark Y $ hg -R ../a book + @ 1:0d2164f0ce0d * X 1:0d2164f0ce0d Y 3:f6fc62dde3c0 Z 1:0d2164f0ce0d @@ -206,6 +215,7 @@ (did you forget to merge? use push -f to force) [255] $ hg -R ../a book + @ 1:0d2164f0ce0d * X 1:0d2164f0ce0d Y 3:f6fc62dde3c0 Z 1:0d2164f0ce0d @@ -221,6 +231,7 @@ (did you forget to merge? use push -f to force) [255] $ hg -R ../a book + @ 1:0d2164f0ce0d * X 1:0d2164f0ce0d Y 3:f6fc62dde3c0 Z 1:0d2164f0ce0d @@ -241,6 +252,7 @@ remote: added 1 changesets with 1 changes to 1 files (+1 heads) updating bookmark Y $ hg -R ../a book + @ 1:0d2164f0ce0d * X 1:0d2164f0ce0d Y 4:4efff6d98829 Z 1:0d2164f0ce0d @@ -263,11 +275,12 @@ namespaces obsolete $ hg debugpushkey http://localhost:$HGPORT/ bookmarks + @ 9b140be1080824d768c5a4691a564088eede71f9 + foo 0000000000000000000000000000000000000000 + foobar 9b140be1080824d768c5a4691a564088eede71f9 Y 4efff6d98829d9c824c621afd6e3f01865f5439f - foobar 9b140be1080824d768c5a4691a564088eede71f9 + X 9b140be1080824d768c5a4691a564088eede71f9 Z 0d2164f0ce0d8f1d6f94351eba04b794909be66c - foo 0000000000000000000000000000000000000000 - X 9b140be1080824d768c5a4691a564088eede71f9 $ hg out -B http://localhost:$HGPORT/ comparing with http://localhost:$HGPORT/ searching for changed bookmarks @@ -289,10 +302,11 @@ $ hg pull -B Z http://localhost:$HGPORT/ pulling from http://localhost:$HGPORT/ no changes found + divergent bookmark @ stored as @1 + adding remote bookmark foo adding remote bookmark foobar + divergent bookmark X stored as X@1 adding remote bookmark Z - adding remote bookmark foo - divergent bookmark X stored as X@1 importing bookmark Z $ hg clone http://localhost:$HGPORT/ cloned-bookmarks requesting all changes @@ -303,6 +317,7 @@ updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg -R cloned-bookmarks bookmarks + @ 1:9b140be10808 X 1:9b140be10808 Y 3:4efff6d98829 Z 2:0d2164f0ce0d