git-gui blametool
Hi All,
I found the git-gui blame tool interface quiet confusing with the all those color code. What does the color code actually mean ? A simple interface would be
[ commit ] [ line number ] [ code ]
....
...
--------------------------------------
commit details of the selected commit
-aneesh
Quoted 2 lines · Aneesh Kumar K.V
I found the git-gui blame tool interface quiet confusing with the all those color code. What does the color code actually mean ?
Can you try the version of git-gui that Junio pushed out to master last night?
Quoted 9 lines
A simple
interface would be[ commit ] [ line number ] [ code ]
....
...
--------------------------------------
commit details of the selected commit
Because it uses this interface. Almost. It doesn't show the [commit] column.
Signature · 1 line
Shawn.
Quoted 12 lines · Shawn O. Pearce
Quoted 2 lines · Aneesh Kumar K.V
I found the git-gui blame tool interface quiet confusing with the all those color code. What does the color code actually mean ?
Can you try the version of git-gui that Junio pushed out to
masterlast night?Quoted 5 lines
A simple
interface would be[ commit ] [ line number ] [ code ]
Quoted 8 lines
Quoted 4 lines
....
...
--------------------------------------
commit details of the selected commitBecause it uses this interface. Almost. It doesn't show the [commit] column.
I tried the same one. I was requesting to add the commit column. Right now the interface is pretty confusing. After some reading of the code i figured out that colours have a specific meaning. May be we need to add a manual to the same.
but any how having commit in a column like this is really nice. I just sent a new patch for blameview. That should give an idea how much the interface looks better.
-aneesh
Quoted 8 lines · Aneesh Kumar
I tried the same one. I was requesting to add the commit column. Right now the interface is pretty confusing. After some reading of the code i figured out that colours have a specific meaning. May be we need to add a manual to the same.
but any how having commit in a column like this is really nice. I just sent a new patch for blameview. That should give an idea how much the interface looks better.
Ahhh. I was thinking of adding it myself anyway. Now that two people think showing a commit column might be a good idea, I'll add it in.
Signature · 1 line
Shawn.
Quoted 12 lines · Aneesh Kumar K.V
Hi All,
I found the git-gui blame tool interface quiet confusing with the all those color code. What does the color code actually mean ? A simple interface would be
[ commit ] [ line number ] [ code ]
....
...
--------------------------------------
commit details of the selected commit
Sine i don't have a tcl/tk reference around i update blameview to show the above. The patch is attached below in case you are interested.
NOTE: How do i resize the widgets in perl-gtk ? I wanted the commit window to be a bit larger. Any help ?
-aneesh
contrib/blameview/blameview.perl +26 -6
@@ -25,11 +25,13 @@ EOS my $window = Gtk2::Window->new('toplevel'); $window->signal_connect(destroy => sub { Gtk2->main_quit }); +my $vbox = Gtk2::VBox->new(); +$vbox->set_homogeneous(0); +$window->add($vbox); my $scrolled_window = Gtk2::ScrolledWindow->new; -$window->add($scrolled_window); +$vbox->pack_start($scrolled_window, 1, 1, 0); my $fileview = Gtk2::SimpleList->new( 'Commit' => 'text', - 'CommitInfo' => 'text', 'FileLine' => 'text', 'Data' => 'text' );
@@ -41,7 +43,26 @@ $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 $commitwindow = Gtk2::ScrolledWindow->new(); +$commitwindow->set_policy ('GTK_POLICY_AUTOMATIC','GTK_POLICY_AUTOMATIC'); +$vbox->pack_start($commitwindow, 1, 1, 0); +my $commit_text = Gtk2::TextView->new(); +my $commit_buffer = Gtk2::TextBuffer->new(); +$commit_text->set_buffer($commit_buffer); +$commitwindow->add($commit_text); + +$fileview->signal_connect (cursor_changed => sub { + my ($sl) = @_; + my ($path, $focus_column) = $sl->get_cursor(); + my $row_ref = $sl->get_row_data_from_path ($path); + my $c_fh; + open($c_fh, '-|', "git cat-file commit @$row_ref[0]") + or die "unable to find commit @$row_ref[0]"; + my @buffer = <$c_fh>; + $commit_buffer->set_text("@buffer"); + close($c_fh); }); my $fh;
@@ -50,7 +71,7 @@ open($fh, '-|', "git cat-file blob $hash:$fn") while(<$fh>) { chomp; - $fileview->{data}->[$.] = ['HEAD', '?', "$fn:$.", $_]; + $fileview->{data}->[$.] = ['HEAD', "$fn:$.", $_]; } my $blame;
@@ -79,8 +100,7 @@ sub flush_blame_line { for(my $i = 0; $i < $cnt; $i++) { @{$fileview->{data}->[$lno+$i-1]}[0,1,2] = - (substr($commit, 0, 8), $info, - $filename . ':' . ($s_lno+$i)); + (substr($commit, 0, 8), $filename . ':' . ($s_lno+$i)); } }
Quoted 2 lines · Aneesh Kumar K.V
Sine i don't have a tcl/tk reference around i update blameview to show the above. The patch is attached below in case you are interested.
It certainly looks better, though the whole thing is still horribly ugly. You might play with replacing the main List widget with something a bit more compact.
Quoted 2 lines
NOTE: How do i resize the widgets in perl-gtk ? I wanted the commit window to be a bit larger. Any help ?
Something like this?
-Peff
contrib/blameview/blameview.perl +1 -0
@@ -51,6 +51,7 @@ $vbox->pack_start($commitwindow, 1, 1, 0); my $commit_text = Gtk2::TextView->new(); my $commit_buffer = Gtk2::TextBuffer->new(); $commit_text->set_buffer($commit_buffer); +$commit_text->set_size_request(1024, 200); $commitwindow->add($commit_text); $fileview->signal_connect (cursor_changed => sub {
Quoted 12 lines · Aneesh Kumar K.V
Hi All,
I found the git-gui blame tool interface quiet confusing with the all those color code. What does the color code actually mean ? A simple interface would be
[ commit ] [ line number ] [ code ]
....
...
--------------------------------------
commit details of the selected commit
Sine i don't have a tcl/tk reference around i update blameview to show the above. The patch is attached below in case you are interested.
NOTE: How do i resize the widgets in perl-gtk ? I wanted the commit window to be a bit larger. Any help ?
-aneesh
contrib/blameview/blameview.perl +26 -6
@@ -25,11 +25,13 @@ EOS my $window = Gtk2::Window->new('toplevel'); $window->signal_connect(destroy => sub { Gtk2->main_quit }); +my $vbox = Gtk2::VBox->new(); +$vbox->set_homogeneous(0); +$window->add($vbox); my $scrolled_window = Gtk2::ScrolledWindow->new; -$window->add($scrolled_window); +$vbox->pack_start($scrolled_window, 1, 1, 0); my $fileview = Gtk2::SimpleList->new( 'Commit' => 'text', - 'CommitInfo' => 'text', 'FileLine' => 'text', 'Data' => 'text' );
@@ -41,7 +43,26 @@ $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 $commitwindow = Gtk2::ScrolledWindow->new(); +$commitwindow->set_policy ('GTK_POLICY_AUTOMATIC','GTK_POLICY_AUTOMATIC'); +$vbox->pack_start($commitwindow, 1, 1, 0); +my $commit_text = Gtk2::TextView->new(); +my $commit_buffer = Gtk2::TextBuffer->new(); +$commit_text->set_buffer($commit_buffer); +$commitwindow->add($commit_text); + +$fileview->signal_connect (cursor_changed => sub { + my ($sl) = @_; + my ($path, $focus_column) = $sl->get_cursor(); + my $row_ref = $sl->get_row_data_from_path ($path); + my $c_fh; + open($c_fh, '-|', "git cat-file commit @$row_ref[0]") + or die "unable to find commit @$row_ref[0]"; + my @buffer = <$c_fh>; + $commit_buffer->set_text("@buffer"); + close($c_fh); }); my $fh;
@@ -50,7 +71,7 @@ open($fh, '-|', "git cat-file blob $hash:$fn") while(<$fh>) { chomp; - $fileview->{data}->[$.] = ['HEAD', '?', "$fn:$.", $_]; + $fileview->{data}->[$.] = ['HEAD', "$fn:$.", $_]; } my $blame;
@@ -79,8 +100,7 @@ sub flush_blame_line { for(my $i = 0; $i < $cnt; $i++) { @{$fileview->{data}->[$lno+$i-1]}[0,1,2] = - (substr($commit, 0, 8), $info, - $filename . ':' . ($s_lno+$i)); + (substr($commit, 0, 8), $filename . ':' . ($s_lno+$i)); } }