fix: branch detection now correctly filters HEAD and arrow entries

- grep -v '\->' removes the 'origin/HEAD -> origin/main' line
- grep -v '^HEAD$' removes stray HEAD entries
- sed trims whitespace and strips 'origin/' prefix
- sort -u deduplicates across repos
- Result: only clean branch names like 'main', 'dev', 'Dev'
This commit is contained in:
root
2026-06-25 19:46:59 +02:00
parent e42354411a
commit 60162d7882
+10 -2
View File
@@ -1689,13 +1689,21 @@ detect_available_branches() {
local result=()
for repo in "${repos[@]}"; do
[ -d "$repo/.git" ] || continue
for b in $(cd "$repo" && git branch -r 2>/dev/null | sed 's/origin\///' | xargs 2>/dev/null); do
local branches
branches=$(cd "$repo" && git branch -r 2>/dev/null | \
grep -v '\->' | \
sed 's/^[[:space:]]*//' | \
sed 's/^origin\///' | \
grep -v '^HEAD$' | \
sort -u)
while IFS= read -r b; do
[ -z "$b" ] && continue
local found=false
for ab in "${result[@]}"; do
[ "$ab" = "$b" ] && found=true && break
done
$found || result+=("$b")
done
done <<< "$branches"
done
printf '%s\n' "${result[@]}"
}