--- a/mercurial/bookmarks.py Fri Oct 15 03:49:05 2021 +0200
+++ b/mercurial/bookmarks.py Fri Oct 15 04:25:58 2021 +0200
@@ -791,7 +791,7 @@
repo._bookmarks.applychanges(repo, tr, changes)
-def incoming(ui, repo, peer):
+def incoming(ui, repo, peer, mode=None):
"""Show bookmarks incoming from other to repo"""
ui.status(_(b"searching for changed bookmarks\n"))
@@ -805,9 +805,6 @@
).result()
)
- r = comparebookmarks(repo, remotemarks, repo._bookmarks)
- addsrc, adddst, advsrc, advdst, diverge, differ, invalid, same = r
-
incomings = []
if ui.debugflag:
getid = lambda id: id
@@ -823,18 +820,36 @@
def add(b, id, st):
incomings.append(b" %-25s %s\n" % (b, getid(id)))
- for b, scid, dcid in addsrc:
- # i18n: "added" refers to a bookmark
- add(b, hex(scid), _(b'added'))
- for b, scid, dcid in advsrc:
- # i18n: "advanced" refers to a bookmark
- add(b, hex(scid), _(b'advanced'))
- for b, scid, dcid in diverge:
- # i18n: "diverged" refers to a bookmark
- add(b, hex(scid), _(b'diverged'))
- for b, scid, dcid in differ:
- # i18n: "changed" refers to a bookmark
- add(b, hex(scid), _(b'changed'))
+ if mode == b'mirror':
+ localmarks = repo._bookmarks
+ allmarks = set(remotemarks.keys()) | set(localmarks.keys())
+ for b in sorted(allmarks):
+ loc = localmarks.get(b)
+ rem = remotemarks.get(b)
+ if loc == rem:
+ continue
+ elif loc is None:
+ add(b, hex(rem), _(b'added'))
+ elif rem is None:
+ add(b, hex(repo.nullid), _(b'removed'))
+ else:
+ add(b, hex(rem), _(b'changed'))
+ else:
+ r = comparebookmarks(repo, remotemarks, repo._bookmarks)
+ addsrc, adddst, advsrc, advdst, diverge, differ, invalid, same = r
+
+ for b, scid, dcid in addsrc:
+ # i18n: "added" refers to a bookmark
+ add(b, hex(scid), _(b'added'))
+ for b, scid, dcid in advsrc:
+ # i18n: "advanced" refers to a bookmark
+ add(b, hex(scid), _(b'advanced'))
+ for b, scid, dcid in diverge:
+ # i18n: "diverged" refers to a bookmark
+ add(b, hex(scid), _(b'diverged'))
+ for b, scid, dcid in differ:
+ # i18n: "changed" refers to a bookmark
+ add(b, hex(scid), _(b'changed'))
if not incomings:
ui.status(_(b"no changed bookmarks found\n"))
--- a/mercurial/commands.py Fri Oct 15 03:49:05 2021 +0200
+++ b/mercurial/commands.py Fri Oct 15 04:25:58 2021 +0200
@@ -4360,7 +4360,9 @@
ui.status(
_(b'comparing with %s\n') % urlutil.hidepassword(source)
)
- return bookmarks.incoming(ui, repo, other)
+ return bookmarks.incoming(
+ ui, repo, other, mode=path.bookmarks_mode
+ )
finally:
other.close()