diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-01-03 13:57:30 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-01-03 13:57:30 -0800 |
commit | 8ea6ae99b2314ddb24dd9121335b7a5583047f05 (patch) | |
tree | 4041eec5fe9cfc6ba30192cee72a10f6125179c7 | |
parent | caf8b2fbd4b49c66aa70624eaf35ebcdc007ad6d (diff) | |
parent | 3442ea4a75a3c76f65efac71b414584f765e5a99 (diff) | |
download | git-8ea6ae99b2314ddb24dd9121335b7a5583047f05.tar.gz |
Merge branch 'jc/maint-do-not-switch-to-non-commit'
* jc/maint-do-not-switch-to-non-commit:
git checkout: do not allow switching to a tree-ish that is not a commit
-rw-r--r-- | builtin-checkout.c | 2 | ||||
-rwxr-xr-x | t/t2011-checkout-invalid-head.sh | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/builtin-checkout.c b/builtin-checkout.c index c2c05613b6..b5dd9c07b4 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -681,8 +681,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) argv++; argc--; + new.name = arg; if ((new.commit = lookup_commit_reference_gently(rev, 1))) { - new.name = arg; setup_branch_path(&new); if (resolve_ref(new.path, rev, 1, NULL)) new.commit = lookup_commit_reference(rev); diff --git a/t/t2011-checkout-invalid-head.sh b/t/t2011-checkout-invalid-head.sh index 764bb0a6bc..15ebdc26eb 100755 --- a/t/t2011-checkout-invalid-head.sh +++ b/t/t2011-checkout-invalid-head.sh @@ -10,6 +10,10 @@ test_expect_success 'setup' ' git commit -m initial ' +test_expect_success 'checkout should not start branch from a tree' ' + test_must_fail git checkout -b newbranch master^{tree} +' + test_expect_success 'checkout master from invalid HEAD' ' echo 0000000000000000000000000000000000000000 >.git/HEAD && git checkout master -- |