commit: propagate --secret option to subrepos (issue4182) stable
authorJordi Gutiérrez Hermoso <jordigh@octave.org>
Mon, 17 Mar 2014 14:57:13 -0400
branchstable
changeset 20772 03774a2b6991
parent 20771 434619dae569
child 20773 efbf15979538
child 20784 7f4cf938643d
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.
mercurial/commands.py
tests/test-subrepo.t
--- a/mercurial/commands.py	Wed Mar 19 01:07:41 2014 +0900
+++ b/mercurial/commands.py	Mon Mar 17 14:57:13 2014 -0400
@@ -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)
--- a/tests/test-subrepo.t	Wed Mar 19 01:07:41 2014 +0900
+++ b/tests/test-subrepo.t	Mon Mar 17 14:57:13 2014 -0400
@@ -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 ../../