Merge branch 'cc/browser'
[gitweb.git] / builtin-reset.c
index 4c61025aaef96ae9f8bcabe3fd4ad6c0fc2beba3..7ee811f0b8de34025a14a53d42f4fceb477a598e 100644 (file)
@@ -108,7 +108,6 @@ static int update_index_refresh(int fd, struct lock_file *index_lock)
                return error("Could not read index");
        result = refresh_cache(0) ? 1 : 0;
        if (write_cache(fd, active_cache, active_nr) ||
-                       close(fd) ||
                        commit_locked_index(index_lock))
                return error ("Could not refresh index");
        return result;
@@ -158,6 +157,7 @@ static int read_from_tree(const char *prefix, const char **argv,
                return 1;
        diffcore_std(&opt);
        diff_flush(&opt);
+       diff_tree_release_paths(&opt);
 
        if (!index_was_discarded)
                /* The index is still clobbered from do_diff_cache() */
@@ -243,6 +243,9 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
        if (reset_type == NONE)
                reset_type = MIXED; /* by default */
 
+       if (reset_type == HARD && is_bare_repository())
+               die("hard reset makes no sense in a bare repository");
+
        /* Soft reset does not touch the index file nor the working tree
         * at all, but requires them in a good order.  Other resets reset
         * the index file to the tree object we are switching to. */