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
--- a/mercurial/bookmarks.py Fri Oct 15 04:25:58 2021 +0200
+++ b/mercurial/bookmarks.py Fri Oct 15 04:41:24 2021 +0200
@@ -775,6 +775,9 @@
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 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:
--- a/mercurial/helptext/config.txt Fri Oct 15 04:25:58 2021 +0200
+++ b/mercurial/helptext/config.txt Fri Oct 15 04:41:24 2021 +0200
@@ -1757,6 +1757,9 @@
- ``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``
--- a/mercurial/utils/urlutil.py Fri Oct 15 04:25:58 2021 +0200
+++ b/mercurial/utils/urlutil.py Fri Oct 15 04:41:24 2021 +0200
@@ -769,6 +769,7 @@
SUPPORTED_BOOKMARKS_MODES = {
b'default',
b'mirror',
+ b'ignore',
}
--- a/rust/Cargo.lock Fri Oct 15 04:25:58 2021 +0200
+++ b/rust/Cargo.lock Fri Oct 15 04:41:24 2021 +0200
@@ -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"
--- a/tests/test-bookmarks-pushpull.t Fri Oct 15 04:25:58 2021 +0200
+++ b/tests/test-bookmarks-pushpull.t Fri Oct 15 04:41:24 2021 +0200
@@ -523,6 +523,21 @@
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
--- a/tests/test-help.t Fri Oct 15 04:25:58 2021 +0200
+++ b/tests/test-help.t Fri Oct 15 04:41:24 2021 +0200
@@ -1908,6 +1908,8 @@
"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: