From 3442ea4a75a3c76f65efac71b414584f765e5a99 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 3 Jan 2009 04:07:32 -0800 Subject: git checkout: do not allow switching to a tree-ish that is not a commit "git checkout -b newbranch $commit^{tree}" mistakenly created a new branch rooted at the current HEAD, because in that case, the two structure fields used to see if the command was invoked without any argument (hence it needs to default to checking out the HEAD) were populated incorrectly. Upon seeing a command line argument that we took as a rev, we should store that string in new.name, even if that does not name a commit. This will correctly trigger the existing safety logic. Signed-off-by: Junio C Hamano Acked-by: Daniel Barkalow --- builtin-checkout.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'builtin-checkout.c') diff --git a/builtin-checkout.c b/builtin-checkout.c index c107fd643a..544aa5add1 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -515,8 +515,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); -- cgit v1.2.3