Code

git-gui: always default to the last merged branch in remote delete
authorHeiko Voigt <hvoigt@hvoigt.net>
Sat, 12 Feb 2011 16:44:58 +0000 (17:44 +0100)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Sun, 13 Feb 2011 00:47:24 +0000 (00:47 +0000)
This is useful if you are directly working together with other
developers pushing feature branches on a shared remote. You typically
push feature branches to the remote so others can review. Once they are
satisfied and the branch is merged into the main branch it needs to be
deleted on the server.

Since we did not yet have a preselected default branch in the remote
delete dialog lets use the last merged branch if it is found on the
server.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
git-gui.sh
lib/merge.tcl
lib/remote_branch_delete.tcl

index 886719a8ce475049ddf9e32b9129210f2a685ec5..d96df63ab0501299761d2230c079109cc14d77c4 100755 (executable)
@@ -139,6 +139,10 @@ if {$_trace >= 0} {
        set _trace 0
 }
 
+# variable for the last merged branch (useful for a default when deleting
+# branches).
+set _last_merged_branch {}
+
 proc shellpath {} {
        global _shellpath env
        if {[string match @@* $_shellpath]} {
index 5cded2341c541b5688adbac35d3d2e1216bc2d0b..460d32fa22fc77f6621e5ec9a9c6ba6dc98050c2 100644 (file)
@@ -83,6 +83,7 @@ method _visualize {} {
 
 method _start {} {
        global HEAD current_branch remote_url
+       global _last_merged_branch
 
        set name [_rev $this]
        if {$name eq {}} {
@@ -109,6 +110,7 @@ method _start {} {
        regsub ^refs/heads/ $branch {} branch
        puts $fh "$cmit\t\tbranch '$branch' of $remote"
        close $fh
+       set _last_merged_branch $branch
 
        set cmd [list git]
        lappend cmd merge
index f872a3d89d89bc861ea3729ec7974833bdac277f..fcc06d03a1dfc4919f762d70e2809f29dab77390 100644 (file)
@@ -251,7 +251,7 @@ method _write_url        {args} { set urltype url    }
 method _write_check_head {args} { set checktype head }
 
 method _write_head_list {args} {
-       global current_branch
+       global current_branch _last_merged_branch
 
        $head_m delete 0 end
        foreach abr $head_list {
@@ -267,6 +267,13 @@ method _write_head_list {args} {
                        set check_head $current_branch
                }
        }
+       set lmb [lsearch -exact -sorted $head_list $_last_merged_branch]
+       if {$lmb >= 0} {
+               $w.heads.l conf -state normal
+               $w.heads.l select set $lmb
+               $w.heads.l yview $lmb
+               $w.heads.l conf -state disabled
+       }
 }
 
 method _write_urltype {args} {