push: prepare the issue of multiple kinds of messages
To gather all the bookmark pushing actions together, we need code performing
those actions to be ready for them. We need to be able to produce different
messages for different actions.
--- a/mercurial/exchange.py Thu Oct 02 13:19:49 2014 -0500
+++ b/mercurial/exchange.py Fri Sep 26 18:33:11 2014 -0700
@@ -150,6 +150,16 @@
else:
return self.fallbackheads
+# mapping of message used when pushing bookmark
+bookmsgmap = {'update': (_("updating bookmark %s\n"),
+ _('updating bookmark %s failed!\n')),
+ 'export': (_("exporting bookmark %s\n"),
+ _('exporting bookmark %s failed!\n')),
+ 'delete': (_("deleting remote bookmark %s\n"),
+ _('deleting remote bookmark %s failed!\n')),
+ }
+
+
def push(repo, remote, force=False, revs=None, newbranch=False, bookmarks=()):
'''Push outgoing changesets (limited by revs) from a local
repository to remote. Return an integer:
@@ -475,9 +485,17 @@
part.addparam('key', enc(book))
part.addparam('old', enc(old))
part.addparam('new', enc(new))
- part2book.append((part.id, book))
+ action = 'update'
+ if not old:
+ action = 'export'
+ elif not new:
+ action = 'delete'
+ part2book.append((part.id, book, action))
+
+
def handlereply(op):
- for partid, book in part2book:
+ ui = pushop.ui
+ for partid, book, action in part2book:
partrep = op.records.getreplies(partid)
results = partrep['pushkey']
assert len(results) <= 1
@@ -486,9 +504,9 @@
else:
ret = int(results[0]['return'])
if ret:
- pushop.ui.status(_("updating bookmark %s\n") % book)
+ ui.status(bookmsgmap[action][0] % book)
else:
- pushop.ui.warn(_('updating bookmark %s failed!\n') % book)
+ ui.warn(bookmsgmap[action][1] % book)
if pushop.bkresult is not None:
pushop.bkresult = 1
return handlereply
@@ -710,11 +728,20 @@
pushop.stepsdone.add('bookmarks')
ui = pushop.ui
remote = pushop.remote
+
for b, old, new in pushop.outbookmarks:
+ action = 'update'
+ if not old:
+ action = 'export'
+ elif not new:
+ action = 'delete'
if remote.pushkey('bookmarks', b, old, new):
- ui.status(_("updating bookmark %s\n") % b)
+ ui.status(bookmsgmap[action][0] % b)
else:
- ui.warn(_('updating bookmark %s failed!\n') % b)
+ ui.warn(bookmsgmap[action][1] % b)
+ # discovery can have set the value form invalid entry
+ if pushop.bkresult is not None:
+ pushop.bkresult = 1
class pulloperation(object):
"""A object that represent a single pull operation