summaryrefslogtreecommitdiff
path: root/rerere.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-02-11 13:41:44 -0800
committerJunio C Hamano <gitster@pobox.com>2015-02-11 13:41:45 -0800
commit76c6747b7e0a67416c1d88bf50440436397abd3f (patch)
tree77a38d7b1e5762b57baaaf687a4eb1a56e4b7cbb /rerere.c
parent092c4be7f5d691809913eb83a2360f035c67ab06 (diff)
parent89ea90351dd32fbe384d0cf844640a9c55606f3b (diff)
downloadgit-76c6747b7e0a67416c1d88bf50440436397abd3f.tar.gz
Merge branch 'jn/rerere-fail-on-auto-update-failure'
"git rerere" (invoked internally from many mergy operations) did not correctly signal errors when told to update the working tree files and failed to do so for whatever reason. * jn/rerere-fail-on-auto-update-failure: rerere: error out on autoupdate failure
Diffstat (limited to 'rerere.c')
-rw-r--r--rerere.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/rerere.c b/rerere.c
index 1b0555f1a5..31644dec04 100644
--- a/rerere.c
+++ b/rerere.c
@@ -477,27 +477,23 @@ out:
static struct lock_file index_lock;
-static int update_paths(struct string_list *update)
+static void update_paths(struct string_list *update)
{
int i;
- int fd = hold_locked_index(&index_lock, 0);
- int status = 0;
- if (fd < 0)
- return -1;
+ hold_locked_index(&index_lock, 1);
for (i = 0; i < update->nr; i++) {
struct string_list_item *item = &update->items[i];
- if (add_file_to_cache(item->string, ADD_CACHE_IGNORE_ERRORS))
- status = -1;
+ if (add_file_to_cache(item->string, 0))
+ exit(128);
}
- if (!status && active_cache_changed) {
+ if (active_cache_changed) {
if (write_locked_index(&the_index, &index_lock, COMMIT_LOCK))
die("Unable to write new index file");
- } else if (fd >= 0)
+ } else
rollback_lock_file(&index_lock);
- return status;
}
static int do_plain_rerere(struct string_list *rr, int fd)