- set all_trackings [list]
- foreach b [array names tracking_branches] {
- regsub ^refs/(heads|remotes)/ $b {} b
- lappend all_trackings $b
+ set all_trackings {}
+ set cmd {}
+ foreach name [array names tracking_branches] {
+ if {[regsub {/\*$} $name {} name]} {
+ lappend cmd $name
+ } else {
+ regsub ^refs/(heads|remotes)/ $name {} name
+ lappend all_trackings $name
+ }
+ }
+
+ if {$cmd ne {}} {
+ set fd [open "| git for-each-ref --format=%(refname) $cmd" r]
+ while {[gets $fd name] > 0} {
+ regsub ^refs/(heads|remotes)/ $name {} name
+ lappend all_trackings $name
+ }
+ close $fd