Mercurial > public > mercurial-scm > hg-stable
diff mercurial/merge.py @ 24803:e89f909edffa stable 3.4-rc
merge default into stable for 3.4 freeze
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 16 Apr 2015 20:57:51 -0500 |
parents | a8e6897dffbe |
children | 51844b8b5017 |
line wrap: on
line diff
--- a/mercurial/merge.py Thu Apr 16 22:33:53 2015 +0900 +++ b/mercurial/merge.py Thu Apr 16 20:57:51 2015 -0500 @@ -1045,9 +1045,7 @@ raise util.Abort(_("uncommitted changes"), hint=_("use 'hg status' to list changes")) for s in sorted(wc.substate): - if wc.sub(s).dirty(): - raise util.Abort(_("uncommitted changes in " - "subrepository '%s'") % s) + wc.sub(s).bailifchanged() elif not overwrite: if p1 == p2: # no-op update @@ -1186,9 +1184,17 @@ labels - merge labels eg ['local', 'graft'] """ + # If we're grafting a descendant onto an ancestor, be sure to pass + # mergeancestor=True to update. This does two things: 1) allows the merge if + # the destination is the same as the parent of the ctx (so we can use graft + # to copy commits), and 2) informs update that the incoming changes are + # newer than the destination so it doesn't prompt about "remote changed foo + # which local deleted". + mergeancestor = repo.changelog.isancestor(repo['.'].node(), ctx.node()) stats = update(repo, ctx.node(), True, True, False, pctx.node(), - labels=labels) + mergeancestor=mergeancestor, labels=labels) + # drop the second merge parent repo.dirstate.beginparentchange() repo.setparents(repo['.'].node(), nullid)