D6845: pushkeys: introduce a server.bookmarks-pushkey-reject option to complement D6776

idlsoft (Sandu Turcan) phabricator at mercurial-scm.org
Thu Sep 12 16:48:21 UTC 2019


idlsoft created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6845

AFFECTED FILES
  mercurial/bookmarks.py
  mercurial/configitems.py
  tests/test-bookmarks-pushpull.t

CHANGE DETAILS

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
@@ -1350,3 +1350,28 @@
   no changes found (ignored 1 secret changesets)
   abort: cannot push bookmark foo as it points to a secret changeset
   [255]
+
+Should fail to push a bookmark if server.bookmarks-pushkey-reject=true
+  $ hg init pb_server
+  $ cat << EOF >> pb_server/.hg/hgrc
+  > [server]
+  > bookmarks-pushkey-reject = true
+  > [web]
+  > push_ssl = false
+  > allow_push = *
+  > EOF
+  $ echo a > pb_server/a
+  $ hg --cwd pb_server add a
+  $ hg -R pb_server commit -m "Initial commit"
+  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ hg serve -R pb_server -p $HGPORT --pid-file=pb_server.pid -d
+  $ cat pb_server.pid >> $DAEMON_PIDS
+  $ hg clone -q http://localhost:$HGPORT/ pb_copy
+  $ hg -R pb_copy book book1
+  $ hg -R pb_copy push -B book1 --config devel.legacy.exchange=bookmarks
+  pushing to http://localhost:$HGPORT/
+  searching for changes
+  no changes found
+  abort: exporting bookmark book1 failed!
+  [255]
+  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -1027,6 +1027,9 @@
 coreconfigitem('server', 'bookmarks-pushkey-compat',
     default=True,
 )
+coreconfigitem('server', 'bookmarks-pushkey-reject',
+    default=False,
+)
 coreconfigitem('server', 'bundle1',
     default=True,
 )
diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py
--- a/mercurial/bookmarks.py
+++ b/mercurial/bookmarks.py
@@ -445,6 +445,8 @@
     return d
 
 def pushbookmark(repo, key, old, new):
+    if repo.ui.configbool('server', 'bookmarks-pushkey-reject'):
+        return False
     if bookmarksinstore(repo):
         wlock = util.nullcontextmanager()
     else:



To: idlsoft, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list