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'
|
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'::
|
'find-rev'::
|
||||||
When given an SVN revision number of the form 'rN', returns the
|
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
|
"Show info about the latest SVN revision
|
||||||
on the current branch",
|
on the current branch",
|
||||||
{ 'url' => \$_url, } ],
|
{ 'url' => \$_url, } ],
|
||||||
|
'blame' => [ \&Git::SVN::Log::cmd_blame,
|
||||||
|
"Show what revision and author last modified each line of a file",
|
||||||
|
{} ],
|
||||||
);
|
);
|
||||||
|
|
||||||
my $cmd;
|
my $cmd;
|
||||||
@ -4448,6 +4451,24 @@ out:
|
|||||||
print commit_log_separator unless $incremental || $oneline;
|
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;
|
package Git::SVN::Migration;
|
||||||
# these version numbers do NOT correspond to actual version numbers
|
# these version numbers do NOT correspond to actual version numbers
|
||||||
# of git nor git-svn. They are just relative.
|
# of git nor git-svn. They are just relative.
|
||||||
|
Loading…
Reference in New Issue
Block a user