When called with --show-current, git branch will print the current
branch name and terminate. Only the actual name gets printed,
without refs/heads. In detached HEAD state, nothing is output.
Intended both for scripting and interactive/informative use.
Unlike git branch --list, no filtering is needed to just get the
branch name.
Signed-off-by: Daniels Umanovskis <daniels@umanovskis.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Daniels Umanovskis6 years agocommitted byJunio C Hamano
@ -100,6 +100,50 @@ test_expect_success 'git branch -v pattern does not show branch summaries' '
@@ -100,6 +100,50 @@ test_expect_success 'git branch -v pattern does not show branch summaries' '
test_must_fail git branch -v branch*
'
test_expect_success 'git branch `--show-current` shows current branch' '
cat >expect <<-\EOF &&
branch-two
EOF
git checkout branch-two &&
git branch --show-current >actual &&
test_cmp expect actual
'
test_expect_success 'git branch `--show-current` is silent when detached HEAD' '
git checkout HEAD^0 &&
git branch --show-current >actual &&
test_must_be_empty actual
'
test_expect_success 'git branch `--show-current` works properly when tag exists' '
cat >expect <<-\EOF &&
branch-and-tag-name
EOF
test_when_finished "
git checkout branch-one
git branch -D branch-and-tag-name
" &&
git checkout -b branch-and-tag-name &&
test_when_finished "git tag -d branch-and-tag-name" &&
git tag branch-and-tag-name &&
git branch --show-current >actual &&
test_cmp expect actual
'
test_expect_success 'git branch `--show-current` works properly with worktrees' '
cat >expect <<-\EOF &&
branch-one
branch-two
EOF
git checkout branch-one &&
git worktree add worktree branch-two &&
{
git branch --show-current &&
git -C worktree branch --show-current
} >actual &&
test_cmp expect actual
'
test_expect_success 'git branch shows detached HEAD properly' '
cat >expect <<EOF &&
* (HEAD detached at $(git rev-parse --short HEAD^0))