+proc populate_pull_menu {m} {
+ global gitdir repo_config all_remotes mainfont
+
+ foreach remote $all_remotes {
+ set rb {}
+ if {[array get repo_config remote.$remote.url] != {}} {
+ if {[array get repo_config remote.$remote.fetch] != {}} {
+ regexp {^([^:]+):} \
+ [lindex $repo_config(remote.$remote.fetch) 0] \
+ line rb
+ }
+ } else {
+ catch {
+ set fd [open [file join $gitdir remotes $remote] r]
+ while {[gets $fd line] >= 0} {
+ if {[regexp {^Pull:[ \t]*([^:]+):} $line line rb]} {
+ break
+ }
+ }
+ close $fd
+ }
+ }
+
+ set rb_short $rb
+ regsub ^refs/heads/ $rb {} rb_short
+ if {$rb_short != {}} {
+ $m add command \
+ -label "Branch $rb_short from $remote..." \
+ -command [list pull_remote $remote $rb] \
+ -font $mainfont
+ }
+ }
+}
+