diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-07-09 09:02:00 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-07-09 09:02:00 -0700 |
commit | 45c96c0c8264975519c595afa37136c488f7017a (patch) | |
tree | ea8ca5666e267caed04623876fca75f7c1c1e4e2 | |
parent | 967abba7169ad10eff841fe32b70f3e7a1126b63 (diff) | |
parent | 8ced1aa08f9e1798b2b3fec41a0598ef79b477fe (diff) | |
download | git-45c96c0c8264975519c595afa37136c488f7017a.tar.gz |
Merge branch 'cw/no-detaching-an-unborn'
"git checkout --detach", when you are still on an unborn branch,
should be forbidden, but it wasn't.
* cw/no-detaching-an-unborn:
git-checkout: disallow --detach on unborn branch
-rw-r--r-- | builtin/checkout.c | 2 | ||||
-rwxr-xr-x | t/t2017-checkout-orphan.sh | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/builtin/checkout.c b/builtin/checkout.c index e8c1b1f189..3980d5d06e 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -915,6 +915,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); diff --git a/t/t2017-checkout-orphan.sh b/t/t2017-checkout-orphan.sh index 0e3b8582f2..655f278c5f 100755 --- a/t/t2017-checkout-orphan.sh +++ b/t/t2017-checkout-orphan.sh @@ -116,4 +116,10 @@ test_expect_success '--orphan refuses to switch if a merge is needed' ' git reset --hard ' +test_expect_success 'cannot --detach on an unborn branch' ' + git checkout master && + git checkout --orphan new && + test_must_fail git checkout --detach +' + test_done |