git-reset: refuse to do hard reset in a bare repository
It makes no sense since there is no working tree. A soft reset should be fine, though. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									02e5ba4ae6
								
							
						
					
					
						commit
						49b9362fd3
					
				|  | @ -244,6 +244,9 @@ int cmd_reset(int argc, const char **argv, const char *prefix) | |||
| 	if (reset_type == NONE) | ||||
| 		reset_type = MIXED; /* by default */ | ||||
|  | ||||
| 	if (reset_type == HARD && is_bare_repository()) | ||||
| 		die("hard reset makes no sense in a bare repository"); | ||||
|  | ||||
| 	/* 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. */ | ||||
|  |  | |||
|  | @ -0,0 +1,28 @@ | |||
| #!/bin/sh | ||||
|  | ||||
| test_description='git-reset in a bare repository' | ||||
| . ./test-lib.sh | ||||
|  | ||||
| test_expect_success 'setup non-bare' ' | ||||
| 	echo one >file && | ||||
| 	git add file && | ||||
| 	git commit -m one && | ||||
| 	echo two >file && | ||||
| 	git commit -a -m two | ||||
| ' | ||||
|  | ||||
| test_expect_success 'setup bare' ' | ||||
| 	git clone --bare . bare.git && | ||||
| 	cd bare.git | ||||
| ' | ||||
|  | ||||
| test_expect_success 'hard reset is not allowed' ' | ||||
| 	! git reset --hard HEAD^ | ||||
| ' | ||||
|  | ||||
| test_expect_success 'soft reset is allowed' ' | ||||
| 	git reset --soft HEAD^ && | ||||
| 	test "`git show --pretty=format:%s | head -n 1`" = "one" | ||||
| ' | ||||
|  | ||||
| test_done | ||||
		Loading…
	
		Reference in New Issue
	
	 Jeff King
						Jeff King