[PATCH] Do not allow merging with uncommitted changes in a subrepo

Oleg Stepanov oleg.stepanov at jetbrains.com
Wed Feb 16 10:56:43 CST 2011


# HG changeset patch
# User Oleg Stepanov <oleg.stepanov at jetbrains.com>
# Date 1297875371 28800
# Node ID 10c73deb8939710cc9161c2f05b607084c8b45ec
# Parent  9f707b297b0f52278acc6c4a4f7c6d801001acb7
Do not allow merging with uncommitted changes in a subrepo

diff -r 9f707b297b0f -r 10c73deb8939 mercurial/merge.py
--- a/mercurial/merge.py	Tue Jan 18 15:55:49 2011 -0600
+++ b/mercurial/merge.py	Wed Feb 16 08:56:11 2011 -0800
@@ -505,6 +505,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
diff -r 9f707b297b0f -r 10c73deb8939 tests/test-merge-subrepos.t
--- /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]


More information about the Mercurial-devel mailing list