Patchwork [STABLE,V2] singlehead: making config item a bool again

login
register
mail settings
Submitter Georges Racinet
Date Nov. 21, 2019, 1:43 p.m.
Message ID <0509d93280bfd9df473a.1574343795@purity.tombe.racinet.fr>
Download mbox | patch
Permalink /patch/43389/
State Accepted
Headers show

Comments

Georges Racinet - Nov. 21, 2019, 1:43 p.m.
# HG changeset patch
# User Georges Racinet <georges.racinet@octobus.net>
# Date 1574273222 -3600
#      Wed Nov 20 19:07:02 2019 +0100
# Branch stable
# Node ID 0509d93280bfd9df473ad4ee5b00d0d1d1e8e291
# 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
Yuya Nishihara - Nov. 22, 2019, 12:33 p.m.
On Thu, 21 Nov 2019 14:43:15 +0100, Georges Racinet wrote:
> # HG changeset patch
> # User Georges Racinet <georges.racinet@octobus.net>
> # Date 1574273222 -3600
> #      Wed Nov 20 19:07:02 2019 +0100
> # Branch stable
> # Node ID 0509d93280bfd9df473ad4ee5b00d0d1d1e8e291
> # Parent  ca3dca416f8d5863ca6f5a4a6a6bb835dcd5feeb
> # EXP-Topic single_head_is_boolean
> singlehead: making config item a bool again

Queued for stable, thanks.

Patch

diff -r ca3dca416f8d -r 0509d93280bf 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
@@ -2086,11 +2086,10 @@ 
             tracktags(tr2)
             repo = reporef()
 
-            r = repo.ui.configsuboptions(
-                b'experimental', b'single-head-per-branch'
-            )
-            singlehead, singleheadsub = r
+            singleheadopt = (b'experimental', b'single-head-per-branch')
+            singlehead = repo.ui.configbool(*singleheadopt)
             if singlehead:
+                singleheadsub = repo.ui.configsuboptions(*singleheadopt)[1]
                 accountclosed = singleheadsub.get(
                     b"account-closed-heads", False
                 )
diff -r ca3dca416f8d -r 0509d93280bf 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,35 @@ 
   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
+
+Because of previous test, we'll also push c_aL0 and c_aM0.
+
+  $ hg out -T "{desc}\n"
+  comparing with $TESTTMP/single-head-server
+  searching for changes
+  c_aL0
+  c_aM0
+
+Let's make a new head and push everythin. The server feedback will mention
+exactly one new head because c_aM0 is closed.
+
+  $ 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 (+1 heads)