Add `git svn blame' command
This command is identical to `git blame', but it shows SVN revision numbers instead of git commit hashes. [ew: support "^initial commit" and minor formatting fixes] Signed-off-by: Tim Stoakes <tim@stoakes.net> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
04f32cf1b3
commit
6fb5375ede
@ -161,6 +161,13 @@ New features:
|
||||
+
|
||||
Any other arguments are passed directly to `git log'
|
||||
|
||||
'blame'::
|
||||
Show what revision and author last modified each line of a file. This is
|
||||
identical to `git blame', but SVN revision numbers are shown instead of git
|
||||
commit hashes.
|
||||
+
|
||||
All arguments are passed directly to `git blame'.
|
||||
|
||||
--
|
||||
'find-rev'::
|
||||
When given an SVN revision number of the form 'rN', returns the
|
||||
|
21
git-svn.perl
21
git-svn.perl
@ -186,6 +186,9 @@ my %cmd = (
|
||||
"Show info about the latest SVN revision
|
||||
on the current branch",
|
||||
{ 'url' => \$_url, } ],
|
||||
'blame' => [ \&Git::SVN::Log::cmd_blame,
|
||||
"Show what revision and author last modified each line of a file",
|
||||
{} ],
|
||||
);
|
||||
|
||||
my $cmd;
|
||||
@ -4448,6 +4451,24 @@ out:
|
||||
print commit_log_separator unless $incremental || $oneline;
|
||||
}
|
||||
|
||||
sub cmd_blame {
|
||||
my $path = shift;
|
||||
|
||||
config_pager();
|
||||
run_pager();
|
||||
|
||||
my ($fh, $ctx) = command_output_pipe('blame', @_, $path);
|
||||
while (my $line = <$fh>) {
|
||||
if ($line =~ /^\^?([[:xdigit:]]+)\s/) {
|
||||
my (undef, $rev, undef) = ::cmt_metadata($1);
|
||||
$rev = sprintf('%-10s', $rev);
|
||||
$line =~ s/^\^?[[:xdigit:]]+(\s)/$rev$1/;
|
||||
}
|
||||
print $line;
|
||||
}
|
||||
command_close_pipe($fh, $ctx);
|
||||
}
|
||||
|
||||
package Git::SVN::Migration;
|
||||
# these version numbers do NOT correspond to actual version numbers
|
||||
# of git nor git-svn. They are just relative.
|
||||
|
Loading…
Reference in New Issue
Block a user