Mercurial > public > mercurial-scm > hg
comparison mercurial/merge.py @ 27316:777f668eca70
merge: refuse update/merge if there are unresolved conflicts (BC)
We currently allow updating and merging (with --force) when there are
unresolved merge conflicts, as long as there is only one parent of the
working copy. Even worse, when updating to another revision
(linearly), if one of the unresolved files (including any conflict
markers in the working copy) can now be merged cleanly with the target
revision, the file becomes marked as resolved.
While we could potentially allow updates that affect only files that
are not in the set of unresolved files, that's considerably more work,
and we don't have a use case for it anyway. Instead, let's keep it
simple and refuse any merge or update (without -C) when there are
unresolved conflicts.
Note that test-merge-local.t explicitly checks for conflict markers
that get carried over on update. It's unclear if that was intentional
or not, but it seems bad enough that we should forbid it. The simplest
way of fixing the test case is to leave the conflict markers in place
and just mark the files resolved, so let's just do that for now.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 07 Dec 2015 20:43:24 -0800 |
parents | d6859d86a5d5 |
children | 43c00ca887d1 |
comparison
equal
deleted
inserted
replaced
27315:be48b7559422 | 27316:777f668eca70 |
---|---|
1339 pas = [p1.ancestor(p2, warn=branchmerge)] | 1339 pas = [p1.ancestor(p2, warn=branchmerge)] |
1340 | 1340 |
1341 fp1, fp2, xp1, xp2 = p1.node(), p2.node(), str(p1), str(p2) | 1341 fp1, fp2, xp1, xp2 = p1.node(), p2.node(), str(p1), str(p2) |
1342 | 1342 |
1343 ### check phase | 1343 ### check phase |
1344 if not overwrite and len(pl) > 1: | 1344 if not overwrite: |
1345 raise error.Abort(_("outstanding uncommitted merge")) | 1345 if len(pl) > 1: |
1346 raise error.Abort(_("outstanding uncommitted merge")) | |
1347 ms = mergestate.read(repo) | |
1348 if list(ms.unresolved()): | |
1349 raise error.Abort(_("outstanding merge conflicts")) | |
1346 if branchmerge: | 1350 if branchmerge: |
1347 if pas == [p2]: | 1351 if pas == [p2]: |
1348 raise error.Abort(_("merging with a working directory ancestor" | 1352 raise error.Abort(_("merging with a working directory ancestor" |
1349 " has no effect")) | 1353 " has no effect")) |
1350 elif pas == [p1]: | 1354 elif pas == [p1]: |