Browse Source

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>
maint
Alexander Gavrilov 17 years ago committed by Paul Mackerras
parent
commit
77aa0ae8d3
  1. 23
      gitk

23
gitk

@ -2214,6 +2214,8 @@ proc makewindow {} { @@ -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 {} { @@ -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} {}

Loading…
Cancel
Save