[PATCH STABLE] singlehead: making config item a bool again

Georges Racinet georges.racinet at octobus.net
Wed Nov 20 18:23:26 UTC 2019


# HG changeset patch
# User Georges Racinet <georges.racinet at octobus.net>
# Date 1574273222 -3600
#      Wed Nov 20 19:07:02 2019 +0100
# Branch stable
# Node ID c557e15674ea6adfe1b034e5b4af1e26bca850dd
# Parent  ca3dca416f8d5863ca6f5a4a6a6bb835dcd5feeb
# EXP-Topic single_head_is_boolean
singlehead: making config item a bool again

with the use of `configsuboptions`, the main config item has become
a string (unless it's just the default value).

This makes it in particular hard to override in a cascade of HGRC files,
as we do in Heptapod to re-allow multiple heads on specific repositories
while the default behaviour is to forbid them. The added test case reflects
that use-case

diff -r ca3dca416f8d -r c557e15674ea mercurial/localrepo.py
--- a/mercurial/localrepo.py	Tue Nov 05 21:35:19 2019 +0900
+++ b/mercurial/localrepo.py	Wed Nov 20 19:07:02 2019 +0100
@@ -2090,6 +2090,8 @@
                 b'experimental', b'single-head-per-branch'
             )
             singlehead, singleheadsub = r
+            if singlehead is not None and not isinstance(singlehead, bool):
+                singlehead = stringutil.parsebool(singlehead)
             if singlehead:
                 accountclosed = singleheadsub.get(
                     b"account-closed-heads", False
diff -r ca3dca416f8d -r c557e15674ea tests/test-single-head.t
--- a/tests/test-single-head.t	Tue Nov 05 21:35:19 2019 +0900
+++ b/tests/test-single-head.t	Wed Nov 20 19:07:02 2019 +0100
@@ -259,3 +259,28 @@
   abort: rejecting multiple heads on branch "branch_A"
   (3 heads: 49003e504178 5254bcccab93 42b9fe70a3c1)
   [255]
+
+
+Test that config can be overriden as the boolean it is
+------------------------------------------------------
+
+  $ cat <<EOF >> $TESTTMP/single-head-server/.hg/hgrc
+  > [experimental]
+  > single-head-per-branch = no
+  > EOF
+
+let's make a new, non closed head, but because of previous test, we'll also
+push c_aL0 and c_aM0.
+
+  $ hg out
+  $ hg up 'desc("c_aG0")'
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ mkcommit c_aN0
+  created new head
+  $ hg push -f
+  pushing to $TESTTMP/single-head-server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 3 changesets with 3 changes to 3 files


More information about the Mercurial-devel mailing list