reset [--mixed]: only write index file once
[gitweb.git] / builtin / reset.c
index c1d6ef2609f95279f6b43f4b5e823fb461e6cda7..e8a3e41531db4f727a664aa3a72e92d7fbd3cc65 100644 (file)
@@ -336,6 +336,11 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
                        err = reset_index(sha1, MIXED, quiet);
                if (err)
                        die(_("Could not reset index file to revision '%s'."), rev);
+
+               if (reset_type == MIXED) /* Report what has not been updated. */
+                       update_index_refresh(
+                               quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN);
+
                if (write_cache(newfd, active_cache, active_nr) ||
                    commit_locked_index(lock))
                        die(_("Could not write new index file."));
@@ -347,15 +352,6 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 
        if (reset_type == HARD && !update_ref_status && !quiet)
                print_new_head_line(commit);
-       else if (reset_type == MIXED) { /* Report what has not been updated. */
-               struct lock_file *index_lock = xcalloc(1, sizeof(struct lock_file));
-               int fd = hold_locked_index(index_lock, 1);
-               update_index_refresh(
-                       quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN);
-               if (write_cache(fd, active_cache, active_nr) ||
-                   commit_locked_index(index_lock))
-                       error("Could not refresh index");
-       }
 
        remove_branch_state();