Code

git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror.
authorMark Burton <markb@ordern.com>
Tue, 2 Dec 2008 15:15:02 +0000 (15:15 +0000)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 2 Dec 2008 15:20:19 +0000 (07:20 -0800)
When the destination repository is a mirror, this function goofed by still
passing a refspec to git-push. Now it notices that the remote is a mirror
and holds the refspec.

Signed-off-by: Mark Burton <markb@ordern.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
lib/transport.tcl

index e419d7810ae404e41a0a85080d16f4576d737d8a..b18d9c7a1b0b2d8f370ecd8c4cdf6ac1a4586c51 100644 (file)
@@ -33,10 +33,15 @@ proc push_to {remote} {
 proc start_push_anywhere_action {w} {
        global push_urltype push_remote push_url push_thin push_tags
        global push_force
+       global repo_config
 
+       set is_mirror 0
        set r_url {}
        switch -- $push_urltype {
-       remote {set r_url $push_remote}
+       remote {
+               set r_url $push_remote
+               catch {set is_mirror $repo_config(remote.$push_remote.mirror)}
+       }
        url {set r_url $push_url}
        }
        if {$r_url eq {}} return
@@ -53,23 +58,29 @@ proc start_push_anywhere_action {w} {
                lappend cmd --tags
        }
        lappend cmd $r_url
-       set cnt 0
-       foreach i [$w.source.l curselection] {
-               set b [$w.source.l get $i]
-               lappend cmd "refs/heads/$b:refs/heads/$b"
-               incr cnt
-       }
-       if {$cnt == 0} {
-               return
-       } elseif {$cnt == 1} {
-               set unit branch
+       if {$is_mirror} {
+               set cons [console::new \
+                       [mc "push %s" $r_url] \
+                       [mc "Mirroring to %s" $r_url]]
        } else {
-               set unit branches
-       }
+               set cnt 0
+               foreach i [$w.source.l curselection] {
+                       set b [$w.source.l get $i]
+                       lappend cmd "refs/heads/$b:refs/heads/$b"
+                       incr cnt
+               }
+               if {$cnt == 0} {
+                       return
+               } elseif {$cnt == 1} {
+                       set unit branch
+               } else {
+                       set unit branches
+               }
 
-       set cons [console::new \
-               [mc "push %s" $r_url] \
-               [mc "Pushing %s %s to %s" $cnt $unit $r_url]]
+               set cons [console::new \
+                       [mc "push %s" $r_url] \
+                       [mc "Pushing %s %s to %s" $cnt $unit $r_url]]
+       }
        console::exec $cons $cmd
        destroy $w
 }