X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-checkout.c;h=20b34ce6e10d9b863226b501cf5a35178b898995;hb=55bc3dc4ccd0f4d1f8612c45c5577500d35bdf18;hp=6cdb320ae72b438031049892a9bb78e5bc523c73;hpb=297f6a535cb46d246d47a9ff2473cef4ee1ada27;p=git.git diff --git a/builtin-checkout.c b/builtin-checkout.c index 6cdb320ae..20b34ce6e 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -351,8 +351,16 @@ struct branch_info { static void setup_branch_path(struct branch_info *branch) { struct strbuf buf = STRBUF_INIT; - strbuf_addstr(&buf, "refs/heads/"); - strbuf_addstr(&buf, branch->name); + int ret; + + if ((ret = interpret_nth_last_branch(branch->name, &buf)) + && ret == strlen(branch->name)) { + branch->name = xstrdup(buf.buf); + strbuf_splice(&buf, 0, 0, "refs/heads/", 11); + } else { + strbuf_addstr(&buf, "refs/heads/"); + strbuf_addstr(&buf, branch->name); + } branch->path = strbuf_detach(&buf, NULL); } @@ -661,6 +669,9 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) arg = argv[0]; has_dash_dash = (argc > 1) && !strcmp(argv[1], "--"); + if (!strcmp(arg, "-")) + arg = "@{-1}"; + if (get_sha1(arg, rev)) { if (has_dash_dash) /* case (1) */ die("invalid reference: %s", arg);