diff options
author | Aneesh Kumar K.V <aneesh.kumar@gmail.com> | 2007-01-30 13:26:50 +0530 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-02-05 13:49:00 -0800 |
commit | 3fb624521e059c6c3caef470a9ff03f72b86036c (patch) | |
tree | b1bb36a1dba813b5afd271b223f0afda6787d037 | |
parent | 041794188ff4f7a0b3ada8058d174a0c114da78b (diff) | |
download | git-3fb624521e059c6c3caef470a9ff03f72b86036c.tar.gz git-3fb624521e059c6c3caef470a9ff03f72b86036c.tar.xz |
blameview: Support browsable functionality to blameview.
Double clicking on the row execs a new blameview with commit hash
as argument.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-x | contrib/blameview/blameview.perl | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/contrib/blameview/blameview.perl b/contrib/blameview/blameview.perl index 5e9a67c12..807d01fe3 100755 --- a/contrib/blameview/blameview.perl +++ b/contrib/blameview/blameview.perl @@ -3,7 +3,17 @@ use Gtk2 -init; use Gtk2::SimpleList; -my $fn = shift or die "require filename to blame"; +my $hash; +my $fn; +if ( @ARGV == 1 ) { + $hash = "HEAD"; + $fn = shift; +} elsif ( @ARGV == 2 ) { + $hash = shift; + $fn = shift; +} else { + die "Usage blameview [<rev>] <filename>"; +} Gtk2::Rc->parse_string(<<'EOS'); style "treeview_style" @@ -27,17 +37,24 @@ $scrolled_window->add($fileview); $fileview->get_column(0)->set_spacing(0); $fileview->set_size_request(1024, 768); $fileview->set_rules_hint(1); +$fileview->signal_connect (row_activated => sub { + my ($sl, $path, $column) = @_; + my $row_ref = $sl->get_row_data_from_path ($path); + system("blameview @$row_ref[0] $fn"); + # $row_ref is now an array ref to the double-clicked row's data. + }); my $fh; -open($fh, '-|', "git cat-file blob HEAD:$fn") +open($fh, '-|', "git cat-file blob $hash:$fn") or die "unable to open $fn: $!"; + while(<$fh>) { chomp; $fileview->{data}->[$.] = ['HEAD', '?', "$fn:$.", $_]; } my $blame; -open($blame, '-|', qw(git blame --incremental --), $fn) +open($blame, '-|', qw(git blame --incremental --), $fn, $hash) or die "cannot start git-blame $fn"; Glib::IO->add_watch(fileno($blame), 'in', \&read_blame_line); |