# HG changeset patch # User FUJIWARA Katsunori # Date 1428429379 -32400 # Node ID 8cf70c97a6e1295c536737d4a6c751b0666acac2 # Parent bf13b44bbb0a671b96c4318bf7f4183f55440558 bookmarks: show detailed status about outgoing bookmarks Before this patch, "hg outgoing -B" shows only difference of bookmarks between two repositories, and it isn't user friendly. This patch shows detailed status about outgoing bookmarks at "hg outgoing -B". To avoid breaking backward compatibility with other tool chains, this patch shows status, only if --verbose is specified, diff -r bf13b44bbb0a -r 8cf70c97a6e1 mercurial/bookmarks.py --- a/mercurial/bookmarks.py Wed Apr 08 02:56:19 2015 +0900 +++ b/mercurial/bookmarks.py Wed Apr 08 02:56:19 2015 +0900 @@ -494,18 +494,22 @@ getid = lambda id: id else: getid = lambda id: id[:12] - def add(b, id): - outgoings.append(" %-25s %s\n" % (b, getid(id))) + if ui.verbose: + def add(b, id, st): + outgoings.append(" %-25s %s %s\n" % (b, getid(id), st)) + else: + def add(b, id, st): + outgoings.append(" %-25s %s\n" % (b, getid(id))) for b, scid, dcid in addsrc: - add(b, scid) + add(b, scid, _('added')) for b, scid, dcid in adddst: - add(b, ' ' * 40) + add(b, ' ' * 40, _('deleted')) for b, scid, dcid in advsrc: - add(b, scid) + add(b, scid, _('advanced')) for b, scid, dcid in diverge: - add(b, scid) + add(b, scid, _('diverged')) for b, scid, dcid in differ: - add(b, scid) + add(b, scid, _('changed')) if not outgoings: ui.status(_("no changed bookmarks found\n")) diff -r bf13b44bbb0a -r 8cf70c97a6e1 mercurial/commands.py --- a/mercurial/commands.py Wed Apr 08 02:56:19 2015 +0900 +++ b/mercurial/commands.py Wed Apr 08 02:56:19 2015 +0900 @@ -4795,6 +4795,31 @@ See pull for details of valid destination formats. + .. container:: verbose + + With -B/--bookmarks, the result of bookmark comparison between + local and remote repositories is displayed. With -v/--verbose, + status is also displayed for each bookmark like below:: + + BM1 01234567890a added + BM2 deleted + BM3 234567890abc advanced + BM4 34567890abcd diverged + BM5 4567890abcde changed + + The action taken when pushing depends on the + status of each bookmark: + + :``added``: push with ``-B`` will create it + :``deleted``: push with ``-B`` will delete it + :``advanced``: push will update it + :``diverged``: push with ``-B`` will update it + :``changed``: push with ``-B`` will update it + + From the point of view of pushing behavior, bookmarks + existing only in the remote repository are treated as + ``deleted``, even if it is in fact added remotely. + Returns 0 if there are outgoing changes, 1 otherwise. """ if opts.get('graph'): diff -r bf13b44bbb0a -r 8cf70c97a6e1 tests/test-bookmarks-pushpull.t --- a/tests/test-bookmarks-pushpull.t Wed Apr 08 02:56:19 2015 +0900 +++ b/tests/test-bookmarks-pushpull.t Wed Apr 08 02:56:19 2015 +0900 @@ -534,13 +534,13 @@ $ hg -R repo1 outgoing -B repo2 -v comparing with repo2 searching for changed bookmarks - ADD_ON_REPO1 66f7d451a68b - ADD_ON_REPO2 - ADV_ON_REPO1 fa942426a6fd - DIFF_ADV_ON_REPO1 6100d3090acf - DIFF_ADV_ON_REPO2 1ea73414a91b - DIFF_DIVERGED 6100d3090acf - DIVERGED 66f7d451a68b + ADD_ON_REPO1 66f7d451a68b added + ADD_ON_REPO2 deleted + ADV_ON_REPO1 fa942426a6fd advanced + DIFF_ADV_ON_REPO1 6100d3090acf advanced + DIFF_ADV_ON_REPO2 1ea73414a91b changed + DIFF_DIVERGED 6100d3090acf changed + DIVERGED 66f7d451a68b diverged $ hg -R repo2 incoming -B repo1 -v comparing with repo1 @@ -553,13 +553,13 @@ $ hg -R repo2 outgoing -B repo1 -v comparing with repo1 searching for changed bookmarks - ADD_ON_REPO1 - ADD_ON_REPO2 66f7d451a68b - ADV_ON_REPO2 66f7d451a68b - DIFF_ADV_ON_REPO1 1ea73414a91b - DIFF_ADV_ON_REPO2 e7bd5218ca15 - DIFF_DIVERGED e7bd5218ca15 - DIVERGED fa942426a6fd + ADD_ON_REPO1 deleted + ADD_ON_REPO2 66f7d451a68b added + ADV_ON_REPO2 66f7d451a68b advanced + DIFF_ADV_ON_REPO1 1ea73414a91b changed + DIFF_ADV_ON_REPO2 e7bd5218ca15 advanced + DIFF_DIVERGED e7bd5218ca15 changed + DIVERGED fa942426a6fd diverged $ cd ..