# HG changeset patch # User FUJIWARA Katsunori # Date 1426775765 -32400 # Node ID c0096a2bd3ff5b4318907401d8e7da740649a020 # Parent d0ea2028e8e668a459bbfdf0a49d68e3f6a20d8e 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. diff -r d0ea2028e8e6 -r c0096a2bd3ff mercurial/bookmarks.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")) diff -r d0ea2028e8e6 -r c0096a2bd3ff mercurial/commands.py --- 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: