It is strange and fragile that a mixed reset is disallowed in a bare
repo but is allowed in a .git dir. So this patch simplifies things
by only allowing soft resets when not in a working tree.
This patch is also needed to speed up "git reset" by using
unpack_tree() directly (instead of execing "git read-tree"). A
following patch will do just that.
Signed-off-by: Christian Couder <redacted>
---
builtin-reset.c | 3 +--
t/t7103-reset-bare.sh | 4 ++--
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/builtin-reset.c b/builtin-reset.c
index 11d1c6e..14bdb03 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -286,8 +286,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
if (reset_type == NONE)
reset_type = MIXED; /* by default */
- if ((reset_type == HARD || reset_type == MERGE)
- && !is_inside_work_tree())
+ if (reset_type != SOFT && !is_inside_work_tree())
die("%s reset requires a work tree",
reset_type_names[reset_type]);
diff --git a/t/t7103-reset-bare.sh b/t/t7103-reset-bare.sh
index 68041df..13344b2 100755
--- a/t/t7103-reset-bare.sh
+++ b/t/t7103-reset-bare.sh
@@ -21,8 +21,8 @@ test_expect_success 'merge reset requires a worktree' '
test_must_fail git reset --merge)
'
-test_expect_success 'mixed reset is ok' '
- (cd .git && git reset)
+test_expect_success 'mixed reset requires a worktree' '
+ (cd .git && test_must_fail git reset)
'
test_expect_success 'soft reset is ok' '
--
1.6.6.rc1.8.gd33ec