]> asedeno.scripts.mit.edu Git - git.git/blobdiff - lib/remote.tcl
git-gui: remove dots in some UI strings
[git.git] / lib / remote.tcl
index 55a6dc33011701902f12c9af575074808bbcbcba..aba6eb8343e98b3cb73e5145fe584998695e5d50 100644 (file)
@@ -17,33 +17,47 @@ proc is_tracking_branch {name} {
 proc all_tracking_branches {} {
        global tracking_branches
 
-       set all_trackings {}
-       set cmd {}
+       set all [list]
+       set pat [list]
+       set cmd [list]
+
        foreach spec $tracking_branches {
-               set name [lindex $spec 0]
-               if {[string range $name end-1 end] eq {/*}} {
-                       lappend cmd [string range $name 0 end-2]
+               set dst [lindex $spec 0]
+               if {[string range $dst end-1 end] eq {/*}} {
+                       lappend pat $spec
+                       lappend cmd [string range $dst 0 end-2]
                } else {
-                       regsub ^refs/(heads|remotes)/ $name {} name
-                       lappend all_trackings $name
+                       lappend all $spec
                }
        }
 
-       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
+       if {$pat ne {}} {
+               set fd [eval git_read for-each-ref --format=%(refname) $cmd]
+               while {[gets $fd n] > 0} {
+                       foreach spec $pat {
+                               set dst [string range [lindex $spec 0] 0 end-2]
+                               set len [string length $dst]
+                               if {[string equal -length $len $dst $n]} {
+                                       set src [string range [lindex $spec 2] 0 end-2]
+                                       set spec [list \
+                                               $n \
+                                               [lindex $spec 1] \
+                                               $src[string range $n $len end] \
+                                               ]
+                                       lappend all $spec
+                               }
+                       }
                }
                close $fd
        }
 
-       return [lsort -unique $all_trackings]
+       return [lsort -index 0 -unique $all]
 }
 
 proc load_all_remotes {} {
        global repo_config
        global all_remotes tracking_branches some_heads_tracking
+       global remote_url
 
        set some_heads_tracking 0
        set all_remotes [list]
@@ -63,8 +77,15 @@ proc load_all_remotes {} {
                        catch {
                                set fd [open [file join $rm_dir $name] r]
                                while {[gets $fd line] >= 0} {
+                                       if {[regexp {^URL:[     ]*(.+)$} $line line url]} {
+                                               set remote_url($name) $url
+                                               continue
+                                       }
                                        if {![regexp {^Pull:[   ]*([^:]+):(.+)$} \
                                                $line line src dst]} continue
+                                       if {[string index $src 0] eq {+}} {
+                                               set src [string range $src 1 end]
+                                       }
                                        if {![string equal -length 5 refs/ $src]} {
                                                set src $rh_str$src
                                        }
@@ -84,12 +105,16 @@ proc load_all_remotes {} {
        foreach line [array names repo_config remote.*.url] {
                if {![regexp ^remote\.(.*)\.url\$ $line line name]} continue
                lappend all_remotes $name
+               set remote_url($name) $repo_config(remote.$name.url)
 
                if {[catch {set fl $repo_config(remote.$name.fetch)}]} {
                        set fl {}
                }
                foreach line $fl {
                        if {![regexp {^([^:]+):(.+)$} $line line src dst]} continue
+                       if {[string index $src 0] eq {+}} {
+                               set src [string range $src 1 end]
+                       }
                        if {![string equal -length 5 refs/ $src]} {
                                set src $rh_str$src
                        }
@@ -134,7 +159,7 @@ proc populate_fetch_menu {} {
                if {$enable} {
                        lappend prune_list $r
                        $m add command \
-                               -label "Fetch from $r..." \
+                               -label [mc "Fetch from %s" $r] \
                                -command [list fetch_from $r]
                }
        }
@@ -144,7 +169,7 @@ proc populate_fetch_menu {} {
        }
        foreach r $prune_list {
                $m add command \
-                       -label "Prune from $r..." \
+                       -label [mc "Prune from %s" $r] \
                        -command [list prune_from $r]
        }
 }
@@ -178,7 +203,7 @@ proc populate_push_menu {} {
                                $m add separator
                        }
                        $m add command \
-                               -label "Push to $r..." \
+                               -label [mc "Push to %s" $r] \
                                -command [list push_to $r]
                        incr fast_count
                }