diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-05-08 18:37:28 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-05-08 18:37:28 +0300 |
commit | ec2642a2a127c192c2af239793a0f63f59845658 (patch) | |
tree | 4455168d0eeccfe16bd7e5de4f4d2c1c3dc7a22f /t | |
parent | 5b5def9a99030ecf2b62163ea7856f91cd8f292c (diff) | |
parent | f3534c98e44c9f811742c7ea288e75d4baa3c27d (diff) |
Merge branch 'jt/submodule-repo-is-with-worktree'
The logic to tell if a Git repository has a working tree protects
"git branch -D" from removing the branch that is currently checked
out by mistake. The implementation of this logic was broken for
repositories with unusual name, which unfortunately is the norm for
submodules these days. This has been fixed.
* jt/submodule-repo-is-with-worktree:
worktree: update is_bare heuristics
Diffstat (limited to 't')
-rwxr-xr-x | t/t3200-branch.sh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index 478b82cf9b..e9ad50b66d 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -264,6 +264,30 @@ test_expect_success 'git branch --list -d t should fail' ' test_must_fail git rev-parse refs/heads/t ' +test_expect_success 'deleting checked-out branch from repo that is a submodule' ' + test_when_finished "rm -rf repo1 repo2" && + + git init repo1 && + git init repo1/sub && + test_commit -C repo1/sub x && + git -C repo1 submodule add ./sub && + git -C repo1 commit -m "adding sub" && + + git clone --recurse-submodules repo1 repo2 && + git -C repo2/sub checkout -b work && + test_must_fail git -C repo2/sub branch -D work +' + +test_expect_success 'bare main worktree has HEAD at branch deleted by secondary worktree' ' + test_when_finished "rm -rf nonbare base secondary" && + + git init nonbare && + test_commit -C nonbare x && + git clone --bare nonbare bare && + git -C bare worktree add --detach ../secondary master && + git -C secondary branch -D master +' + test_expect_success 'git branch --list -v with --abbrev' ' test_when_finished "git branch -D t" && git branch t && |