# HG changeset patch # User Oleg Stepanov # Date 1297875371 28800 # Node ID 6169493ac3f9392ffb1adbfed6e8e5546bf1e3ed # Parent b391c0c9be61d1a5806009cbe8bf14c69d960926 Do not allow merging with uncommitted changes in a subrepo diff -r b391c0c9be61 -r 6169493ac3f9 mercurial/merge.py --- 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 diff -r b391c0c9be61 -r 6169493ac3f9 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]