Code

git-gui: Show all fetched branches for remote pulls.
authorShawn O. Pearce <spearce@spearce.org>
Wed, 13 Dec 2006 03:44:38 +0000 (22:44 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 07:54:16 +0000 (02:54 -0500)
Loop through every remote.<name>.fetch entry and add it as a valid
option in the Pull menu.  This way users can pull any remote branch
that they track, without needing to leave the gui.  Its a rather crude
work around for not having a full merge interface.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui

diff --git a/git-gui b/git-gui
index 36979afd7701feafa743ffa152c217582580b5e3..0c88e4c7c32edffe0f4bef5e7216d5796b0b9dc9 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -1819,28 +1819,29 @@ proc populate_pull_menu {m} {
        global gitdir repo_config all_remotes disable_on_lock
 
        foreach remote $all_remotes {
-               set rb {}
+               set rb_list [list]
                if {[array get repo_config remote.$remote.url] ne {}} {
                        if {[array get repo_config remote.$remote.fetch] ne {}} {
-                               regexp {^([^:]+):} \
-                                       [lindex $repo_config(remote.$remote.fetch) 0] \
-                                       line rb
+                               foreach line $repo_config(remote.$remote.fetch) {
+                                       if {[regexp {^([^:]+):} $line line rb]} {
+                                               lappend rb_list $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
+                                               lappend rb_list $rb
                                        }
                                }
                                close $fd
                        }
                }
 
-               set rb_short $rb
-               regsub ^refs/heads/ $rb {} rb_short
-               if {$rb_short ne {}} {
+               foreach rb $rb_list {
+                       regsub ^refs/heads/ $rb {} rb_short
                        $m add command \
                                -label "Branch $rb_short from $remote..." \
                                -command [list pull_remote $remote $rb] \