summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c65e898)
raw | patch | inline | side by side (parent: c65e898)
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | |
Mon, 20 Feb 2006 15:20:10 +0000 (16:20 +0100) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Wed, 22 Feb 2006 10:06:42 +0000 (02:06 -0800) |
Since Ryan's git-annotate is much faster, and has support for renames,
it is likely it goes into the mainstream git soon. Adapt it a little to
work with gitcvs, and actually use it.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
it is likely it goes into the mainstream git soon. Adapt it a little to
work with gitcvs, and actually use it.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-annotate.perl | patch | blob | history |
diff --git a/git-annotate.perl b/git-annotate.perl
index 8f984318af406fd725097052b4a4f01b9141c1e0..3800c4654b7f04a0fbd47fe4c5832f0ac6b0692b 100755 (executable)
--- a/git-annotate.perl
+++ b/git-annotate.perl
use warnings;
use strict;
+use Getopt::Std;
+use POSIX qw(strftime gmtime);
-my $filename = shift @ARGV;
+sub usage() {
+ print STDERR 'Usage: ${\basename $0} [-s] [-S revs-file] file
+
+ -l show long rev
+ -r follow renames
+ -S commit use revs from revs-file instead of calling git-rev-list
+';
+
+ exit(1);
+}
+our ($opt_h, $opt_l, $opt_r, $opt_S);
+getopts("hlrS:") or usage();
+$opt_h && usage();
+
+my $filename = shift @ARGV;
my @stack = (
{
my ($rev, @parents) = @$revinst;
$head ||= $rev;
+ if (!defined($rev)) {
+ $rev = "";
+ }
$revs{$rev}{'filename'} = $bound->{'filename'};
if (scalar @parents > 0) {
$revs{$rev}{'parents'} = \@parents;
next;
}
+ if (!$opt_r) {
+ next;
+ }
+
my $newbound = find_parent_renames($rev, $bound->{'filename'});
if ( exists $newbound->{'filename'} && $newbound->{'filename'} ne $bound->{'filename'}) {
push @stack, $newbound;
my ($output, $rev, $committer, $date);
if (ref $l eq 'ARRAY') {
($output, $rev, $committer, $date) = @$l;
- if (length($rev) > 8) {
+ if (!$opt_l && length($rev) > 8) {
$rev = substr($rev,0,8);
}
} else {
($rev, $committer, $date) = ('unknown', 'unknown', 'unknown');
}
- printf("(%8s %10s %10s %d)%s\n", $rev, $committer, $date, $i++, $output);
+ printf("%s\t(%10s\t%10s\t%d)%s\n", $rev, $committer,
+ format_date($date), $i++, $output);
}
sub init_claim {
sub git_rev_list {
my ($rev, $file) = @_;
- open(P,"-|","git-rev-list","--parents","--remove-empty",$rev,"--",$file)
- or die "Failed to exec git-rev-list: $!";
+ if ($opt_S) {
+ open(P, '<' . $opt_S);
+ } else {
+ open(P,"-|","git-rev-list","--parents","--remove-empty",$rev,"--",$file)
+ or die "Failed to exec git-rev-list: $!";
+ }
my @revs;
while(my $line = <P>) {
return %info;
}
+
+sub format_date {
+ my ($timestamp, $timezone) = split(' ', $_[0]);
+
+ return strftime("%Y-%m-%d %H:%M:%S " . $timezone, gmtime($timestamp));
+}
+