merge: loosen overcautious "working file will be lost" check.

The three-way merge complained unconditionally when a path that
does not exist in the index is involved in a merge when it
existed in the working tree.  If we are merging an old version
that had that path tracked, but the path is not tracked anymore,
and if we are merging that old version in, the result will be
that the path is not tracked.  In that case we should not
complain.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2006-10-08 22:48:06 -07:00
parent 887a612fef
commit ed93b449c5
3 changed files with 69 additions and 4 deletions

View File

@ -642,7 +642,7 @@ int threeway_merge(struct cache_entry **stages,
(remote_deleted && head && head_match)) {
if (index)
return deleted_entry(index, index, o);
else if (path)
else if (path && !head_deleted)
verify_absent(path, "removed", o);
return 0;
}
@ -661,8 +661,6 @@ int threeway_merge(struct cache_entry **stages,
if (index) {
verify_uptodate(index, o);
}
else if (path)
verify_absent(path, "overwritten", o);
o->nontrivial_merge = 1;