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>
This commit is contained in:

committed by
Paul Mackerras

parent
39816d60e1
commit
77aa0ae8d3
23
gitk
23
gitk
@ -2214,6 +2214,8 @@ proc makewindow {} {
|
|||||||
-command {flist_hl 1}
|
-command {flist_hl 1}
|
||||||
$flist_menu add command -label [mc "External diff"] \
|
$flist_menu add command -label [mc "External diff"] \
|
||||||
-command {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
|
# 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)
|
# delete $dir when we see eof on $f (presumably because the child has exited)
|
||||||
proc delete_at_eof {f dir} {
|
proc delete_at_eof {f dir} {
|
||||||
while {[gets $f line] >= 0} {}
|
while {[gets $f line] >= 0} {}
|
||||||
|
Reference in New Issue
Block a user