[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