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.
This commit is contained in:
Jordi Gutiérrez Hermoso 2014-03-17 14:57:13 -04:00
parent 89fcbff9fc
commit 19098ea63d
2 changed files with 18 additions and 0 deletions

View File

@ -1436,11 +1436,14 @@ def commit(ui, repo, *pats, **opts):
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)

View File

@ -1294,3 +1294,18 @@ configuration
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 ../../