diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-02-03 00:26:17 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-02-03 00:26:17 -0800 |
commit | f39e4cfa2ec2bab4175cee3a9e806d8b65161c75 (patch) | |
tree | 080aa6dcd4d42ef5e4583b7ea84f33d97efd7c1f /read-cache.c | |
parent | 1487eb68f7fd145151caa9a11ee00283629b75ef (diff) | |
parent | 4cc8d6c62db1f82b3c98468806d2ee54c7e037ca (diff) | |
download | git-f39e4cfa2ec2bab4175cee3a9e806d8b65161c75.tar.gz git-f39e4cfa2ec2bab4175cee3a9e806d8b65161c75.tar.xz |
Merge branch 'jc/maint-add-u-remove-conflicted'
* jc/maint-add-u-remove-conflicted:
add -u: do not fail to resolve a path as deleted
Diffstat (limited to 'read-cache.c')
-rw-r--r-- | read-cache.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/read-cache.c b/read-cache.c index b1475ffa0..940ec76fd 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1574,6 +1574,26 @@ static void update_callback(struct diff_queue_struct *q, default: die("unexpected diff status %c", p->status); case DIFF_STATUS_UNMERGED: + /* + * ADD_CACHE_IGNORE_REMOVAL is unset if "git + * add -u" is calling us, In such a case, a + * missing work tree file needs to be removed + * if there is an unmerged entry at stage #2, + * but such a diff record is followed by + * another with DIFF_STATUS_DELETED (and if + * there is no stage #2, we won't see DELETED + * nor MODIFIED). We can simply continue + * either way. + */ + if (!(data->flags & ADD_CACHE_IGNORE_REMOVAL)) + continue; + /* + * Otherwise, it is "git add path" is asking + * to explicitly add it; we fall through. A + * missing work tree file is an error and is + * caught by add_file_to_index() in such a + * case. + */ case DIFF_STATUS_MODIFIED: case DIFF_STATUS_TYPE_CHANGED: if (add_file_to_index(&the_index, path, data->flags)) { |