# HG changeset patch # User Pierre-Yves David # Date 2021-10-15 02:41:24 # Node ID b56858d85a7bdd291324cde3acedc7a8362f3297 # Parent 76c071bba40d2867993ecae9ebdb92c7c7196252 bookmarks: add a `ignore` variant of the bookmark mode This new mode allow to disable bookmark exchange with some path (or all path). Differential Revision: https://phab.mercurial-scm.org/D11677 diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -775,6 +775,9 @@ def merging_from_remote(ui, repo, remote def updatefromremote( ui, repo, remotemarks, path, trfunc, explicit=(), mode=None ): + if mode == b'ignore': + # This should move to an higher level to avoid fetching bookmark at all + return ui.debug(b"checking for updated bookmarks\n") if mode == b'mirror': changed = mirroring_remote(ui, repo, remotemarks) @@ -793,6 +796,9 @@ def updatefromremote( def incoming(ui, repo, peer, mode=None): """Show bookmarks incoming from other to repo""" + if mode == b'ignore': + ui.status(_(b"bookmarks exchange disabled with this path\n")) + return 0 ui.status(_(b"searching for changed bookmarks\n")) with peer.commandexecutor() as e: diff --git a/mercurial/helptext/config.txt b/mercurial/helptext/config.txt --- a/mercurial/helptext/config.txt +++ b/mercurial/helptext/config.txt @@ -1757,6 +1757,9 @@ The following sub-options can be defined - ``mirror``: when pulling, replace local bookmarks by remote bookmarks. This is useful to replicate a repository, or as an optimization. + - ``ignore``: ignore bookmarks during exchange. + (This currently only affect pulling) + The following special named paths exist: ``default`` diff --git a/mercurial/utils/urlutil.py b/mercurial/utils/urlutil.py --- a/mercurial/utils/urlutil.py +++ b/mercurial/utils/urlutil.py @@ -769,6 +769,7 @@ def pushrevpathoption(ui, path, value): SUPPORTED_BOOKMARKS_MODES = { b'default', b'mirror', + b'ignore', } diff --git a/rust/Cargo.lock b/rust/Cargo.lock --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1,7 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 - [[package]] name = "adler" version = "0.2.3" diff --git a/tests/test-bookmarks-pushpull.t b/tests/test-bookmarks-pushpull.t --- a/tests/test-bookmarks-pushpull.t +++ b/tests/test-bookmarks-pushpull.t @@ -523,6 +523,21 @@ mirroring bookmarks X@foo 000000000000 removed foo 000000000000 removed foobar 000000000000 removed + $ hg incoming --bookmark -v ../a --config 'paths.*:bookmarks.mode=ignore' + comparing with ../a + bookmarks exchange disabled with this path + $ hg pull ../a --config 'paths.*:bookmarks.mode=ignore' + pulling from ../a + searching for changes + no changes found + $ hg book + @ 1:9b140be10808 + @foo 2:0d2164f0ce0d + X@foo 2:0d2164f0ce0d + Y 0:4e3505fd9583 + Z 2:0d2164f0ce0d + foo -1:000000000000 + * foobar 1:9b140be10808 $ hg pull ../a --config 'paths.*:bookmarks.mode=mirror' pulling from ../a searching for changes diff --git a/tests/test-help.t b/tests/test-help.t --- a/tests/test-help.t +++ b/tests/test-help.t @@ -1908,6 +1908,8 @@ Test section lookup "merged" on push/pull. - "mirror": when pulling, replace local bookmarks by remote bookmarks. This is useful to replicate a repository, or as an optimization. + - "ignore": ignore bookmarks during exchange. (This currently only + affect pulling) The following special named paths exist: