Skip to content

Commit

Permalink
git-gui: Support passing blame to a parent commit.
Browse files Browse the repository at this point in the history
Add a context menu item that switches the view to the
parent of the commit under cursor. It is useful to see
how the file looked before the change, and find older
changes in the same lines.

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 Aug 25, 2008
1 parent a9c80b8 commit 80fd76b
Showing 1 changed file with 38 additions and 10 deletions.
48 changes: 38 additions & 10 deletions lib/blame.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,9 @@ constructor new {i_commit i_path} {
$w.ctxm add command \
-label [mc "Show History Context"] \
-command [cb _gitkcommit]
$w.ctxm add command \
-label [mc "Blame Parent Commit"] \
-command [cb _blameparent]

foreach i $w_columns {
for {set g 0} {$g < [llength $group_colors]} {incr g} {
Expand Down Expand Up @@ -790,19 +793,27 @@ method _load_commit {cur_w cur_d pos} {
set lno [lindex [split [$cur_w index $pos] .] 0]
set dat [lindex $line_data $lno]
if {$dat ne {}} {
lappend history [list \
$commit $path \
$highlight_column \
$highlight_line \
[lindex [$w_file xview] 0] \
[lindex [$w_file yview] 0] \
]
set commit [lindex $dat 0]
set path [lindex $dat 1]
_load $this [list [lindex $dat 2]]
_load_new_commit $this \
[lindex $dat 0] \
[lindex $dat 1] \
[list [lindex $dat 2]]
}
}

method _load_new_commit {new_commit new_path jump} {
lappend history [list \
$commit $path \
$highlight_column \
$highlight_line \
[lindex [$w_file xview] 0] \
[lindex [$w_file yview] 0] \
]

set commit $new_commit
set path $new_path
_load $this $jump
}

method _showcommit {cur_w lno} {
global repo_config
variable active_color
Expand Down Expand Up @@ -969,6 +980,23 @@ method _gitkcommit {} {
}
}

method _blameparent {} {
set dat [_get_click_amov_info $this]
if {$dat ne {}} {
set cmit [lindex $dat 0]

if {[catch {set cparent [git rev-parse --verify "$cmit^"]}]} {
error_popup [strcat [mc "Cannot find parent commit:"] "\n\n$err"]
return;
}

_load_new_commit $this \
$cparent \
[lindex $dat 1] \
[list [lindex $dat 2]]
}
}

method _show_tooltip {cur_w pos} {
if {$tooltip_wm ne {}} {
_open_tooltip $this $cur_w
Expand Down

0 comments on commit 80fd76b

Please sign in to comment.