diff options
author | Chris Webb <chris@arachsys.com> | 2012-06-26 16:06:42 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-06-26 11:11:14 -0700 |
commit | 8ced1aa08f9e1798b2b3fec41a0598ef79b477fe (patch) | |
tree | 4cad32f246e34e8686b0dae6045c60875de8f4ae /builtin/checkout.c | |
parent | abe199808c6586047fb7255b80e3d17ffc26bf6c (diff) | |
download | git-8ced1aa08f9e1798b2b3fec41a0598ef79b477fe.tar.gz git-8ced1aa08f9e1798b2b3fec41a0598ef79b477fe.tar.xz |
git-checkout: disallow --detach on unborn branch
abe199808c (git checkout -b: allow switching out of an unborn branch)
introduced a bug demonstrated by
git checkout --orphan foo
git checkout --detach
git symbolic-ref HEAD
which gives 'refs/heads/(null)'.
This happens because we strbuf_addf(&branch_ref, "refs/heads/%s",
opts->new_branch) when opts->new_branch can be NULL for --detach.
Catch and forbid this case, adding a test to t2017 to catch it in
future.
Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/checkout.c')
-rw-r--r-- | builtin/checkout.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin/checkout.c b/builtin/checkout.c index b76e2c045..a94b553d0 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -921,6 +921,8 @@ static int switch_unborn_to_new_branch(struct checkout_opts *opts) int status; struct strbuf branch_ref = STRBUF_INIT; + if (!opts->new_branch) + die(_("You are on a branch yet to be born")); strbuf_addf(&branch_ref, "refs/heads/%s", opts->new_branch); status = create_symref("HEAD", branch_ref.buf, "checkout -b"); strbuf_release(&branch_ref); |