From: Alexander Gavrilov Date: Sat, 23 Aug 2008 08:29:08 +0000 (+0400) Subject: gitk: Add menu item for calling git gui blame X-Git-Tag: v1.6.1-rc1~2^2~31 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=77aa0ae8d3599b905ceb25db8cc50d6820efb793;p=git.git 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 Signed-off-by: Paul Mackerras --- diff --git a/gitk b/gitk index 7698b7081..2eaa2ae7d 100755 --- a/gitk +++ b/gitk @@ -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} {}