diff --git a/bin/git-delete-merged-branches b/bin/git-delete-merged-branches index 1721f9d..b529ed7 100755 --- a/bin/git-delete-merged-branches +++ b/bin/git-delete-merged-branches @@ -1,7 +1,7 @@ #!/usr/bin/env bash default_branch=$(git_extra_default_branch) -branches=$(git branch --no-color --merged | sed 's/^[ *+]*//' | grep -Fvx -e "$default_branch" -e "main" -e "master" -e "trunk" -e "svn") +branches=$(git branch --no-color --merged | grep -vE "^(\*|\+)" | sed 's/^[ ]*//' | grep -Fvx -e "$default_branch" -e "main" -e "master" -e "trunk" -e "svn") if [ -n "$branches" ] then echo "$branches" | xargs git branch -d diff --git a/bin/git-show-merged-branches b/bin/git-show-merged-branches index d959f4e..17f8f32 100755 --- a/bin/git-show-merged-branches +++ b/bin/git-show-merged-branches @@ -1,4 +1,4 @@ #!/usr/bin/env bash default_branch=$(git_extra_default_branch) -git branch --no-color --merged | sed 's/^[ *+]*//' | grep -Fvx -e "$default_branch" -e "main" -e "master" -e "trunk" -e "svn" +git branch --no-color --merged | grep -vE "^(\*|\+)" | sed 's/^[ ]*//' | grep -Fvx -e "$default_branch" -e "main" -e "master" -e "trunk" -e "svn" diff --git a/bin/git-show-unmerged-branches b/bin/git-show-unmerged-branches index 5859aff..60fa96b 100755 --- a/bin/git-show-unmerged-branches +++ b/bin/git-show-unmerged-branches @@ -1,4 +1,4 @@ #!/usr/bin/env bash default_branch=$(git_extra_default_branch) -git branch --no-color --no-merged | sed 's/^[ *+]*//' | grep -Fvx -e "$default_branch" -e "main" -e "master" -e "trunk" -e "svn" +git branch --no-color --no-merged | grep -vE "^(\*|\+)" | sed 's/^[ ]*//' | grep -Fvx -e "$default_branch" -e "main" -e "master" -e "trunk" -e "svn" diff --git a/tests/git-delete-merged-branches.bats b/tests/git-delete-merged-branches.bats index 6eda772..0336d2e 100644 --- a/tests/git-delete-merged-branches.bats +++ b/tests/git-delete-merged-branches.bats @@ -14,22 +14,22 @@ setup() { test_util.git_init git commit --allow-empty -m "Initial commit" - git branch merged-branch - git branch unmerged-branch - git checkout unmerged-branch + git branch feature-merged + git branch feature-unmerged + git checkout feature-unmerged git commit --allow-empty -m "Unmerged commit" git checkout main } @test "show-merged-branches lists merged branches but not default branch" { run git show-merged-branches - assert_output "merged-branch" + assert_output "feature-merged" assert_success } @test "show-unmerged-branches lists unmerged branches" { run git show-unmerged-branches - assert_output "unmerged-branch" + assert_output "feature-unmerged" assert_success } @@ -39,20 +39,20 @@ setup() { run git branch --list assert_line -p "main" - assert_line -p "unmerged-branch" - refute_line -p "merged-branch" + assert_line -p "feature-unmerged" + refute_line -p "feature-merged" } @test "delete-merged-branches when checked out on feature branch protects default branch" { - git branch merged-feature - git checkout unmerged-branch + git branch other-merged + git checkout feature-unmerged run git delete-merged-branches assert_success run git branch --list assert_line -p "main" - assert_line -p "unmerged-branch" - refute_line -p "merged-feature" + assert_line -p "feature-unmerged" + refute_line -p "other-merged" } @test "delete-merged-branches handles branch names with special characters" {