aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Voigt <hvoigt@hvoigt.net>2011-02-12 17:44:58 +0100
committerPat Thoyts <patthoyts@users.sourceforge.net>2011-02-13 00:47:24 +0000
commit9d04278a4d0fcd784e7b9998caa94cff6cbdca8a (patch)
tree938dcfee522603ddc900db0d74ccbe501dd0468c
parent8b92658206c3fb7d23fdacd626667985bf4c50b4 (diff)
downloadgit-9d04278a4d0fcd784e7b9998caa94cff6cbdca8a.tar.gz
git-9d04278a4d0fcd784e7b9998caa94cff6cbdca8a.tar.xz
git-gui: always default to the last merged branch in remote delete
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>
-rwxr-xr-xgit-gui.sh4
-rw-r--r--lib/merge.tcl2
-rw-r--r--lib/remote_branch_delete.tcl9
3 files changed, 14 insertions, 1 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 886719a8c..d96df63ab 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -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]} {
diff --git a/lib/merge.tcl b/lib/merge.tcl
index 5cded2341..460d32fa2 100644
--- a/lib/merge.tcl
+++ b/lib/merge.tcl
@@ -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
diff --git a/lib/remote_branch_delete.tcl b/lib/remote_branch_delete.tcl
index f872a3d89..fcc06d03a 100644
--- a/lib/remote_branch_delete.tcl
+++ b/lib/remote_branch_delete.tcl
@@ -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} {