Skip to content

Commit

Permalink
Add options to control the search for copies in blame.
Browse files Browse the repository at this point in the history
On huge repositories, -C -C can be way too slow to be
unconditionally enabled, and it can also be useful to control
its precision.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Alexander Gavrilov authored and Shawn O. Pearce committed Jul 17, 2008
1 parent fbc0e7a commit 57cae87
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
2 changes: 2 additions & 0 deletions git-gui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,8 @@ 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.fastcopyblame) false
set default_config(gui.copyblamethreshold) 40
set default_config(gui.diffcontext) 5
set default_config(gui.commitmsgwidth) 75
set default_config(gui.newbranchtemplate) {}
Expand Down
20 changes: 12 additions & 8 deletions lib/blame.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,6 @@ variable group_colors {
#ececec
}

# Switches for original location detection
#
variable original_options [list -C -C]
if {[git-version >= 1.5.3]} {
lappend original_options -w ; # ignore indentation changes
}

# Current blame data; cleared/reset on each load
#
field commit ; # input commit to blame
Expand Down Expand Up @@ -511,7 +504,6 @@ method _exec_blame {cur_w cur_d options cur_s} {
method _read_blame {fd cur_w cur_d} {
upvar #0 $cur_d line_data
variable group_colors
variable original_options

if {$fd ne $current_fd} {
catch {close $fd}
Expand Down Expand Up @@ -684,6 +676,18 @@ method _read_blame {fd cur_w cur_d} {
if {[eof $fd]} {
close $fd
if {$cur_w eq $w_asim} {
# Switches for original location detection
set threshold [get_config gui.copyblamethreshold]
set original_options [list "-C$threshold"]

if {![is_config_true gui.fastcopyblame]} {
# thorough copy search; insert before the threshold
set original_options [linsert $original_options 0 -C]
}
if {[git-version >= 1.5.3]} {
lappend original_options -w ; # ignore indentation changes
}

_exec_blame $this $w_amov @amov_data \
$original_options \
[mc "Loading original location annotations..."]
Expand Down
2 changes: 2 additions & 0 deletions lib/option.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ proc do_options {} {
{b gui.trustmtime {mc "Trust File Modification Timestamps"}}
{b gui.pruneduringfetch {mc "Prune Tracking Branches During Fetch"}}
{b gui.matchtrackingbranch {mc "Match Tracking Branches"}}
{b gui.fastcopyblame {mc "Blame Copy Only On Changed Files"}}
{i-20..200 gui.copyblamethreshold {mc "Minimum Letters To Blame Copy On"}}
{i-0..99 gui.diffcontext {mc "Number of Diff Context Lines"}}
{i-0..99 gui.commitmsgwidth {mc "Commit Message Text Width"}}
{t gui.newbranchtemplate {mc "New Branch Name Template"}}
Expand Down

0 comments on commit 57cae87

Please sign in to comment.