annotate: Support annotation of files on other revisions.
This is a bug fix, and cleans up one or two other things spotted during the course of tracking down the main bug here. [jc: the part that updates test-suite is split out to the next one. Also I dropped "use Data::Dumper;" which seemed leftover from debugging session.] Signed-off-by: Ryan Anderson <ryan@michonline.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
bd494fc76b
commit
5fcab3d7db
@ -99,7 +99,7 @@ while (my $bound = pop @stack) {
|
||||
}
|
||||
}
|
||||
push @revqueue, $head;
|
||||
init_claim( defined $starting_rev ? $starting_rev : 'dirty');
|
||||
init_claim( defined $starting_rev ? $head : 'dirty');
|
||||
unless (defined $starting_rev) {
|
||||
my $diff = open_pipe("git","diff","-R", "HEAD", "--",$filename)
|
||||
or die "Failed to call git diff to check for dirty state: $!";
|
||||
@ -345,6 +345,7 @@ sub git_cat_file {
|
||||
return () unless defined $rev && defined $filename;
|
||||
|
||||
my $blob = git_ls_tree($rev, $filename);
|
||||
die "Failed to find a blob for $filename in rev $rev\n" if !defined $blob;
|
||||
|
||||
my $catfile = open_pipe("git","cat-file", "blob", $blob)
|
||||
or die "Failed to git-cat-file blob $blob (rev $rev, file $filename): " . $!;
|
||||
@ -367,12 +368,13 @@ sub git_ls_tree {
|
||||
|
||||
my ($mode, $type, $blob, $tfilename);
|
||||
while(<$lstree>) {
|
||||
chomp;
|
||||
($mode, $type, $blob, $tfilename) = split(/\s+/, $_, 4);
|
||||
last if ($tfilename eq $filename);
|
||||
}
|
||||
close($lstree);
|
||||
|
||||
return $blob if $filename eq $filename;
|
||||
return $blob if ($tfilename eq $filename);
|
||||
die "git-ls-tree failed to find blob for $filename";
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user