[PATCH] commit: propagate --secret option to subrepos (issue4182)

Jordi Gutiérrez Hermoso jordigh at octave.org
Mon Mar 17 20:48:07 CDT 2014


# HG changeset patch
# User Jordi Gutiérrez Hermoso <jordigh at octave.org>
# Date 1395082633 14400
#      Mon Mar 17 14:57:13 2014 -0400
# Node ID da00652364a5702c181c3e9e3691c47c051f690a
# Parent  b93791e0de25ac0090d66fa04f956414b572a739
commit: propagate --secret option to subrepos (issue4182)

Before this patch, `hg commit --secret` was not getting propagated
correctly, and subrepos were not getting the commit in the secret
phase. The problem is that subrepos get their ui from the base repo's
baseui object and ignore the ui object passed on to them. This sets
and restores both ui objects with the appropriate option.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1436,11 +1436,14 @@
             try:
                 if opts.get('secret'):
                     ui.setconfig('phases', 'new-commit', 'secret')
+                    # Propagate to subrepos
+                    repo.baseui.setconfig('phases', 'new-commit', 'secret')
 
                 return repo.commit(message, opts.get('user'), opts.get('date'),
                                    match, editor=e, extra=extra)
             finally:
                 ui.setconfig('phases', 'new-commit', oldcommitphase)
+                repo.baseui.setconfig('phases', 'new-commit', oldcommitphase)
 
 
         node = cmdutil.commit(ui, repo, commitfunc, pats, opts)
diff --git a/tests/test-subrepo.t b/tests/test-subrepo.t
--- a/tests/test-subrepo.t
+++ b/tests/test-subrepo.t
@@ -1294,3 +1294,18 @@
   15: secret
 
   $ cd ..
+
+
+Test that comit --secret works on both repo and subrepo (issue4182)
+
+  $ cd main
+  $ echo secret >> b
+  $ echo secret >> s/b
+  $ hg commit --secret --subrepo -m "secret"
+  committing subrepository s
+  $ hg phase -r .
+  6: secret
+  $ cd s
+  $ hg phase -r .
+  6: secret
+  $ cd ../../


More information about the Mercurial-devel mailing list