summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2010-01-10 08:52:53 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-01-10 08:52:53 -0800
commit0b4ae29f0328fb8c270030abad132e8f50e05381 (patch)
tree7c95d5b74f47a5c98a35ede8498d4bdbc8b6ff02
parentMerge branch 'jk/push-to-delete' (diff)
parentreset: unbreak hard resets with GIT_WORK_TREE (diff)
downloadtgif-0b4ae29f0328fb8c270030abad132e8f50e05381.tar.xz
Merge branch 'jk/maint-1.6.5-reset-hard'
* jk/maint-1.6.5-reset-hard: reset: unbreak hard resets with GIT_WORK_TREE
-rw-r--r--builtin-reset.c6
-rwxr-xr-xt/t7103-reset-bare.sh6
2 files changed, 8 insertions, 4 deletions
diff --git a/builtin-reset.c b/builtin-reset.c
index 31babd0b97..5b647422d6 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -285,10 +285,8 @@ 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())
- die("%s reset requires a work tree",
- reset_type_names[reset_type]);
+ if (reset_type == HARD || reset_type == MERGE)
+ setup_work_tree();
/* Soft reset does not touch the index file nor the working tree
* at all, but requires them in a good order. Other resets reset
diff --git a/t/t7103-reset-bare.sh b/t/t7103-reset-bare.sh
index 68041df5f4..afb55b3a46 100755
--- a/t/t7103-reset-bare.sh
+++ b/t/t7103-reset-bare.sh
@@ -29,6 +29,12 @@ test_expect_success 'soft reset is ok' '
(cd .git && git reset --soft)
'
+test_expect_success 'hard reset works with GIT_WORK_TREE' '
+ mkdir worktree &&
+ GIT_WORK_TREE=$PWD/worktree GIT_DIR=$PWD/.git git reset --hard &&
+ test_cmp file worktree/file
+'
+
test_expect_success 'setup bare' '
git clone --bare . bare.git &&
cd bare.git