aboutsummaryrefslogtreecommitdiff
path: root/unpack-trees.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-10-08 22:48:06 -0700
committerJunio C Hamano <junkio@cox.net>2006-10-27 17:16:39 -0700
commited93b449c5e13a70beb7f0ae02fb6da95e42a805 (patch)
tree717a934889e5f29199b460ab720e0e227ee4aac3 /unpack-trees.c
parent887a612fef942dd3e7dae452e2dc582738b0fb41 (diff)
downloadgit-ed93b449c5e13a70beb7f0ae02fb6da95e42a805.tar.gz
git-ed93b449c5e13a70beb7f0ae02fb6da95e42a805.tar.xz
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>
Diffstat (limited to 'unpack-trees.c')
-rw-r--r--unpack-trees.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index 3ac0289b3..7cfd628d8 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -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;