diff --git a/builtin/reset.c b/builtin/reset.c index 78e69bd84b..0e1aa76aaa 100644 --- a/builtin/reset.c +++ b/builtin/reset.c @@ -346,6 +346,7 @@ int cmd_reset(int argc, struct object_id oid; struct pathspec pathspec; int intent_to_add = 0; + struct lock_file lock = LOCK_INIT; struct interactive_options interactive_opts = INTERACTIVE_OPTIONS_INIT; const struct option options[] = { OPT__QUIET(&quiet, N_("be quiet, only report errors")), @@ -477,6 +478,9 @@ int cmd_reset(int argc, if (intent_to_add && reset_type != MIXED) die(_("the option '%s' requires '%s'"), "-N", "--mixed"); + if (reset_type != SOFT) + repo_hold_locked_index(the_repository, &lock, + LOCK_DIE_ON_ERROR); if (repo_read_index(the_repository) < 0) die(_("index file corrupt")); @@ -487,9 +491,6 @@ int cmd_reset(int argc, die_if_unmerged_cache(reset_type); if (reset_type != SOFT) { - struct lock_file lock = LOCK_INIT; - repo_hold_locked_index(the_repository, &lock, - LOCK_DIE_ON_ERROR); if (reset_type == MIXED) { int flags = quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN; if (read_from_tree(&pathspec, &oid, intent_to_add)) {