bookmarks: add outgoing() to replace diff() for outgoing bookmarks
This replacement makes enhancement of "show outgoing bookmarks" easy,
because "compare()" can detect more detailed difference of bookmarks
between two repositories.
--- a/mercurial/bookmarks.py Thu Mar 19 23:36:05 2015 +0900
+++ b/mercurial/bookmarks.py Thu Mar 19 23:36:05 2015 +0900
@@ -470,6 +470,34 @@
return 0
+def outgoing(ui, repo, other):
+ '''Show bookmarks outgoing from repo to other
+ '''
+ ui.status(_("searching for changed bookmarks\n"))
+
+ r = compare(repo, repo._bookmarks, other.listkeys('bookmarks'),
+ srchex=hex)
+ addsrc, adddst, advsrc, advdst, diverge, differ, invalid, same = r
+
+ outgoings = []
+ if ui.debugflag:
+ getid = lambda id: id
+ else:
+ getid = lambda id: id[:12]
+ def add(b, id):
+ outgoings.append(" %-25s %s\n" % (b, getid(id)))
+ for b, scid, dcid in addsrc:
+ add(b, scid)
+
+ if not outgoings:
+ ui.status(_("no changed bookmarks found\n"))
+ return 1
+
+ for s in sorted(outgoings):
+ ui.write(s)
+
+ return 0
+
def diff(ui, dst, src):
ui.status(_("searching for changed bookmarks\n"))
--- a/mercurial/commands.py Thu Mar 19 23:36:05 2015 +0900
+++ b/mercurial/commands.py Thu Mar 19 23:36:05 2015 +0900
@@ -4757,7 +4757,7 @@
ui.warn(_("remote doesn't support bookmarks\n"))
return 0
ui.status(_('comparing with %s\n') % util.hidepassword(dest))
- return bookmarks.diff(ui, other, repo)
+ return bookmarks.outgoing(ui, repo, other)
repo._subtoppath = ui.expandpath(dest or 'default-push', dest or 'default')
try: