[PATCH 01 of 15] pull: store binary node in pullop.remotebookmarks
Boris Feld
boris.feld at octobus.net
Wed Oct 18 16:09:53 UTC 2017
# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1508230905 -7200
# Tue Oct 17 11:01:45 2017 +0200
# Node ID a450dc69ef95073af4d4ece34e251ed0bb5b808f
# Parent 537de0b14030868e3e850ae388b08f88cabc88e8
# EXP-Topic b2.bookmarks
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r a450dc69ef95
pull: store binary node in pullop.remotebookmarks
The internal representation of bookmark value is binary. The fact we stored
'hex' was an implementation detail from using pushkey.
We move the values in 'pullop.remotebookmarks' to binary before adding a way to
exchange bookmarks not based on pushkey.
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3911,12 +3911,13 @@
# not ending up with the name of the bookmark because of a race
# condition on the server. (See issue 4689 for details)
remotebookmarks = other.listkeys('bookmarks')
+ remotebookmarks = bookmarks.unhexlifybookmarks(remotebookmarks)
pullopargs['remotebookmarks'] = remotebookmarks
for b in opts['bookmark']:
b = repo._bookmarks.expandname(b)
if b not in remotebookmarks:
raise error.Abort(_('remote bookmark %s not found!') % b)
- revs.append(remotebookmarks[b])
+ revs.append(hex(remotebookmarks[b]))
if revs:
try:
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1348,7 +1348,8 @@
# all known bundle2 servers now support listkeys, but lets be nice with
# new implementation.
return
- pullop.remotebookmarks = pullop.remote.listkeys('bookmarks')
+ books = pullop.remote.listkeys('bookmarks')
+ pullop.remotebookmarks = bookmod.unhexlifybookmarks(books)
@pulldiscovery('changegroup')
@@ -1459,7 +1460,7 @@
# processing bookmark update
for namespace, value in op.records['listkeys']:
if namespace == 'bookmarks':
- pullop.remotebookmarks = value
+ pullop.remotebookmarks = bookmod.unhexlifybookmarks(value)
# bookmark data were either already there or pulled in the bundle
if pullop.remotebookmarks is not None:
@@ -1552,7 +1553,6 @@
pullop.stepsdone.add('bookmarks')
repo = pullop.repo
remotebookmarks = pullop.remotebookmarks
- remotebookmarks = bookmod.unhexlifybookmarks(remotebookmarks)
bookmod.updatefromremote(repo.ui, repo, remotebookmarks,
pullop.remote.url(),
pullop.gettransaction,
More information about the Mercurial-devel
mailing list