diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2008-08-23 12:29:08 +0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-08-26 20:10:10 +1000 |
commit | 77aa0ae8d3599b905ceb25db8cc50d6820efb793 (patch) | |
tree | c9e02e37429f26ee61d2b5f2eed09048126991e7 | |
parent | 39816d60e14b4d3be6ab9cf55caf79d7596bdb29 (diff) | |
download | git-77aa0ae8d3599b905ceb25db8cc50d6820efb793.tar.gz git-77aa0ae8d3599b905ceb25db8cc50d6820efb793.tar.xz |
gitk: Add menu item for calling git gui blame
This adds a new item to the file list popup menu, that calls git gui
blame for the selected file, starting with the first parent of the
current commit.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-x | gitk | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -2214,6 +2214,8 @@ proc makewindow {} { -command {flist_hl 1} $flist_menu add command -label [mc "External diff"] \ -command {external_diff} + $flist_menu add command -label [mc "Blame parent commit"] \ + -command {external_blame 1} } # Windows sends all mouse wheel events to the current focused window, not @@ -3021,6 +3023,27 @@ proc external_diff {} { } } +proc external_blame {parent_idx} { + global flist_menu_file + global nullid nullid2 + global parentlist selectedline currentid + + if {$parent_idx > 0} { + set base_commit [lindex $parentlist $selectedline [expr {$parent_idx-1}]] + } else { + set base_commit $currentid + } + + if {$base_commit eq {} || $base_commit eq $nullid || $base_commit eq $nullid2} { + error_popup [mc "No such commit"] + return + } + + if {[catch {exec git gui blame $base_commit $flist_menu_file &} err]} { + error_popup [mc "git gui blame: command failed: $err"] + } +} + # delete $dir when we see eof on $f (presumably because the child has exited) proc delete_at_eof {f dir} { while {[gets $f line] >= 0} {} |