ref-filter: implement '--contains' option
[gitweb.git] / rerere.c
index 1b0555f1a5a0233e931b13a088c052a56aef3977..94aea9a36f16d9d72c1769aa9e258c5370c7dc84 100644 (file)
--- a/rerere.c
+++ b/rerere.c
@@ -477,27 +477,23 @@ static int merge(const char *name, const char *path)
 
 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)
@@ -663,6 +659,8 @@ int rerere_forget(struct pathspec *pathspec)
                return error("Could not read index");
 
        fd = setup_rerere(&merge_rr, RERERE_NOAUTOUPDATE);
+       if (fd < 0)
+               return 0;
 
        unmerge_cache(pathspec);
        find_conflict(&conflict);