--- a/mercurial/cmdutil.py Tue Oct 11 21:10:03 2011 -0400
+++ b/mercurial/cmdutil.py Tue Oct 11 18:18:15 2011 -0700
@@ -75,6 +75,10 @@
modified, added, removed, deleted = repo.status()[:4]
if modified or added or removed or deleted:
raise util.Abort(_("outstanding uncommitted changes"))
+ ctx = repo[None]
+ for s in ctx.substate:
+ if ctx.sub(s).dirty():
+ raise util.Abort(_("uncommitted changes in subrepo %s") % s)
def logmessage(ui, opts):
""" get the log message according to -m and -l option """
--- a/tests/test-subrepo.t Tue Oct 11 21:10:03 2011 -0400
+++ b/tests/test-subrepo.t Tue Oct 11 18:18:15 2011 -0700
@@ -52,6 +52,14 @@
commit: (clean)
update: (current)
+commands that require a clean repo should respect subrepos
+
+ $ echo b >> s/a
+ $ hg backout tip
+ abort: uncommitted changes in subrepo s
+ [255]
+ $ hg revert -C -R s s/a
+
add sub sub
$ echo ss = ss > s/.hgsub