Code

reset: improve mixed reset error message when in a bare repo
authorChristian Couder <chriscool@tuxfamily.org>
Wed, 30 Dec 2009 05:54:44 +0000 (06:54 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 30 Dec 2009 09:09:43 +0000 (01:09 -0800)
When running a "git reset --mixed" in a bare repository, the
message displayed is something like:

fatal: This operation must be run in a work tree
fatal: Could not reset index file to revision 'HEAD^'.

This message is a little bit misleading because a mixed reset is
ok in a git directory, so it is not absolutely needed to run it in
a work tree.

So this patch improves upon the above by changing the message to:

fatal: mixed reset is not allowed in a bare repository

And if "git reset" is ever sped up by using unpack_tree() directly
(instead of execing "git read-tree"), this patch will also make
sure that a mixed reset is still disallowed in a bare repository.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-reset.c

index 11d1c6e4d6d2ec0580cae3725f6b3a093e68aa67..3180c2b582073a7565e6be487302002f5f97b9a6 100644 (file)
@@ -291,6 +291,10 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
                die("%s reset requires a work tree",
                    reset_type_names[reset_type]);
 
+       if (reset_type == MIXED && is_bare_repository())
+               die("%s reset is not allowed in a bare repository",
+                   reset_type_names[reset_type]);
+
        /* 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. */