summaryrefslogtreecommitdiff
path: root/src/reset.c
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2012-10-13 20:51:57 +0200
committernulltoken <emeric.fermas@gmail.com>2012-10-15 20:41:42 +0200
commitfa5d94a0d4d9bbdd167443f052ad4f1f11541aae (patch)
treeb96dfad568def935bdc5f112aea7d3da9d2e7709 /src/reset.c
parent1ddc537c779a5796c4ed1d5fc2e41bd38cdeb394 (diff)
downloadlibgit2-fa5d94a0d4d9bbdd167443f052ad4f1f11541aae.tar.gz
reset: prevent hard reset in a bare repository
Diffstat (limited to 'src/reset.c')
-rw-r--r--src/reset.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/reset.c b/src/reset.c
index c536e75b8..dfa095be4 100644
--- a/src/reset.c
+++ b/src/reset.c
@@ -39,9 +39,11 @@ int git_reset(
if (git_object_owner(target) != repo)
return reset_error_invalid("The given target does not belong to this repository.");
- if (reset_type == GIT_RESET_MIXED
- && git_repository__ensure_not_bare(repo, "reset mixed") < 0)
- return GIT_EBAREREPO;
+ if (reset_type != GIT_RESET_SOFT
+ && git_repository__ensure_not_bare(
+ repo,
+ reset_type == GIT_RESET_MIXED ? "reset mixed" : "reset hard") < 0)
+ return GIT_EBAREREPO;
if (git_object_peel(&commit, target, GIT_OBJ_COMMIT) < 0) {
reset_error_invalid("The given target does not resolve to a commit");