Browse Source

git-gui: Option to default new branches to match tracking branches

In some workflows users will want to almost always just create a new
local branch that matches a remote branch.  In this type of workflow
it is handy to have the new branch dialog default to "Match Tracking
Branch" and "Starting Revision"-Tracking Branch", with the focus in
the branch filter field.  This can save users working on this type
of workflow at least two mouse clicks every time they create a new
local branch or switch to one with a fast-forward.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Shawn O. Pearce 18 years ago
parent
commit
7cf0442667
  1. 1
      git-gui.sh
  2. 25
      lib/branch_create.tcl
  3. 4
      lib/choose_rev.tcl
  4. 1
      lib/option.tcl

1
git-gui.sh

@ -1339,6 +1339,7 @@ set default_config(merge.verbosity) 2 @@ -1339,6 +1339,7 @@ set default_config(merge.verbosity) 2
set default_config(user.name) {}
set default_config(user.email) {}

set default_config(gui.matchtrackingbranch) false
set default_config(gui.pruneduringfetch) false
set default_config(gui.trustmtime) false
set default_config(gui.diffcontext) 5

25
lib/branch_create.tcl

@ -93,13 +93,14 @@ constructor dialog {} { @@ -93,13 +93,14 @@ constructor dialog {} {
pack $w.options.checkout -anchor nw
pack $w.options -anchor nw -fill x -pady 5 -padx 5

trace add variable @name_type write [cb _select]

set name $repo_config(gui.newbranchtemplate)
if {[is_config_true gui.matchtrackingbranch]} {
set name_type match
}

bind $w <Visibility> "
grab $w
$w_name icursor end
focus $w_name
"
bind $w <Visibility> [cb _visible]
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [cb _create]\;break
tkwait window $w
@ -361,4 +362,18 @@ method _validate {d S} { @@ -361,4 +362,18 @@ method _validate {d S} {
return 1
}

method _select {args} {
if {$name_type eq {match}} {
$w_rev pick_tracking_branch
}
}

method _visible {} {
grab $w
if {$name_type eq {user}} {
$w_name icursor end
focus $w_name
}
}

}

4
lib/choose_rev.tcl

@ -159,6 +159,10 @@ method get {} { @@ -159,6 +159,10 @@ method get {} {
}
}

method pick_tracking_branch {} {
set revtype trck
}

method get_tracking_branch {} {
set i [$w_list curselection]
if {$i eq {} || $revtype ne {trck}} {

1
lib/option.tcl

@ -191,6 +191,7 @@ proc do_options {} { @@ -191,6 +191,7 @@ proc do_options {} {

{b gui.trustmtime {Trust File Modification Timestamps}}
{b gui.pruneduringfetch {Prune Tracking Branches During Fetch}}
{b gui.matchtrackingbranch {Match Tracking Branches}}
{i-0..99 gui.diffcontext {Number of Diff Context Lines}}
{t gui.newbranchtemplate {New Branch Name Template}}
} {

Loading…
Cancel
Save