Mercurial > public > mercurial-scm > hg-stable
diff mercurial/cmdutil.py @ 41985:b1bc6e5f5249
merge with stable
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Tue, 19 Mar 2019 16:36:59 +0300 |
parents | dcbb1b4dc93a 4ea21df312ec |
children | c1d83d916e85 |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Sun Mar 03 20:16:22 2019 +0530 +++ b/mercurial/cmdutil.py Tue Mar 19 16:36:59 2019 +0300 @@ -7,6 +7,7 @@ from __future__ import absolute_import +import copy as copymod import errno import os import re @@ -270,6 +271,28 @@ raise error.Abort(_('cannot partially commit a merge ' '(use "hg commit" instead)')) + status = repo.status(match=match) + + overrides = {(b'ui', b'commitsubrepos'): True} + + with repo.ui.configoverride(overrides, b'record'): + # subrepoutil.precommit() modifies the status + tmpstatus = scmutil.status(copymod.copy(status[0]), + copymod.copy(status[1]), + copymod.copy(status[2]), + copymod.copy(status[3]), + copymod.copy(status[4]), + copymod.copy(status[5]), + copymod.copy(status[6])) + + # Force allows -X subrepo to skip the subrepo. + subs, commitsubs, newstate = subrepoutil.precommit( + repo.ui, wctx, tmpstatus, match, force=True) + for s in subs: + if s in commitsubs: + dirtyreason = wctx.sub(s).dirtyreason(True) + raise error.Abort(dirtyreason) + def fail(f, msg): raise error.Abort('%s: %s' % (f, msg)) @@ -279,7 +302,6 @@ match.explicitdir = vdirs.append match.bad = fail - status = repo.status(match=match) if not force: repo.checkcommitpatterns(wctx, vdirs, match, status, fail) diffopts = patch.difffeatureopts(ui, opts=opts, whitespace=True,