gitool
#!/usr/bin/perl
use strict;
use warnings;
my @modified_files = ();
for (`git status --porcelain`) {
chomp;
next unless /^.M/o or /^M/o;
s/^.{3}//o;
push @modified_files, $_;
}
if (@modified_files) {
my $index = 1;
map { print "$index $_\n"; $index++; } @modified_files;
print ">> ";
} else {
exit;
}
my $selected = <STDIN>;
chomp $selected;
die "Invalid index $selected\n" unless (
$selected =~ /^\d+$/o and
0 < $selected and
$selected <= @modified_files);
$selected--;
system("git diff '$modified_files[$selected]'");