summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVicent Marti <vicent@github.com>2014-04-22 11:03:42 +0200
committerVicent Marti <vicent@github.com>2014-04-22 11:03:42 +0200
commit2e609e2931b107e87b06d22fdcd21f337ab73155 (patch)
tree24e8c53f3ea6ec7759162f427089f745237f9e91 /src
parent28750a7d98ce5e23bac5c1d119109ded8e8aab73 (diff)
parentbd101a7eca6907ab1dd57ae693059466df0da124 (diff)
downloadlibgit2-2e609e2931b107e87b06d22fdcd21f337ab73155.tar.gz
Merge pull request #2286 from libgit2/rb/fix-reset-staged-delete
Fix reset for staged deletes
Diffstat (limited to 'src')
-rw-r--r--src/reset.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/reset.c b/src/reset.c
index e403e2a9a..248c91d3a 100644
--- a/src/reset.c
+++ b/src/reset.c
@@ -60,13 +60,18 @@ int git_reset_default(
for (i = 0, max_i = git_diff_num_deltas(diff); i < max_i; ++i) {
const git_diff_delta *delta = git_diff_get_delta(diff, i);
- if ((error = git_index_conflict_remove(index, delta->old_file.path)) < 0)
- goto cleanup;
-
assert(delta->status == GIT_DELTA_ADDED ||
delta->status == GIT_DELTA_MODIFIED ||
delta->status == GIT_DELTA_DELETED);
+ error = git_index_conflict_remove(index, delta->old_file.path);
+ if (error < 0) {
+ if (delta->status == GIT_DELTA_ADDED && error == GIT_ENOTFOUND)
+ giterr_clear();
+ else
+ goto cleanup;
+ }
+
if (delta->status == GIT_DELTA_DELETED) {
if ((error = git_index_remove(index, delta->old_file.path, 0)) < 0)
goto cleanup;