Do not allow merging with uncommitted changes in a subrepo stable
authorOleg Stepanov <oleg.stepanov@jetbrains.com>
Wed, 16 Feb 2011 08:56:11 -0800
branchstable
changeset 13437 6169493ac3f9
parent 13436 b391c0c9be61
child 13438 48463d889d4e
Do not allow merging with uncommitted changes in a subrepo
mercurial/merge.py
tests/test-merge-subrepos.t
--- a/mercurial/merge.py	Thu Feb 17 18:05:27 2011 -0200
+++ b/mercurial/merge.py	Wed Feb 16 08:56:11 2011 -0800
@@ -508,6 +508,11 @@
             if not force and (wc.files() or wc.deleted()):
                 raise util.Abort(_("outstanding uncommitted changes "
                                    "(use 'hg status' to list changes)"))
+            for s in wc.substate:
+                if wc.sub(s).dirty():
+                    raise util.Abort(_("outstanding uncommitted changes in "
+                                       "subrepository '%s'") % s)
+
         elif not overwrite:
             if pa == p1 or pa == p2: # linear
                 pass # all good
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-merge-subrepos.t	Wed Feb 16 08:56:11 2011 -0800
@@ -0,0 +1,25 @@
+  $ hg init
+
+  $ echo a > a
+  $ hg ci -qAm 'add a'
+
+  $ hg init subrepo
+  $ echo 'subrepo = http://example.net/libfoo' > .hgsub
+  $ hg ci -qAm 'added subrepo'
+
+  $ hg up -qC 0
+  $ echo ax > a
+  $ hg ci -m 'changed a'
+  created new head
+
+  $ hg up -qC 1
+  $ cd subrepo
+  $ echo b > b
+  $ hg add b
+  $ cd ..
+
+Should fail, since there are added files to subrepo:
+
+  $ hg merge
+  abort: outstanding uncommitted changes in subrepository 'subrepo'
+  [255]