Commit 9b3e41f7 by Edward Thomson

index_add_all: remove conflicts when no wd file

If there exists a conflict in the index, but no file in the working
directory, this implies that the user wants to accept the resolution
by removing the file.  Thus, remove the conflict entry from the
index, instead of trying to add a (nonexistent) file.
parent 10549a2d
...@@ -2670,7 +2670,8 @@ static int apply_each_file(const git_diff_delta *delta, float progress, void *pa ...@@ -2670,7 +2670,8 @@ static int apply_each_file(const git_diff_delta *delta, float progress, void *pa
if (error < 0) /* actual error */ if (error < 0) /* actual error */
return error; return error;
if (delta->status == GIT_DELTA_DELETED) /* If the workdir item does not exist, remove it from the index. */
if ((delta->new_file.flags & GIT_DIFF_FLAG_EXISTS) == 0)
error = git_index_remove_bypath(data->index, path); error = git_index_remove_bypath(data->index, path);
else else
error = git_index_add_bypath(data->index, delta->new_file.path); error = git_index_add_bypath(data->index, delta->new_file.path);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment