bookmarks: add outgoing() to replace diff() for outgoing bookmarks
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Thu, 19 Mar 2015 23:36:05 +0900
changeset 24398 c0096a2bd3ff
parent 24397 d0ea2028e8e6
child 24399 3993eb47ea49
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.
mercurial/bookmarks.py
mercurial/commands.py
--- 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: