git-svn: Added 'find-rev' command

This patch adds a new 'find-rev' command to git-svn that lets you easily
translate between SVN revision numbers and git tree-ish.

Signed-off-by: Adam Roben <aroben@apple.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Adam Roben
2007-04-27 11:57:53 -07:00
committed by Junio C Hamano
parent bb924cb331
commit 26e60160a0
2 changed files with 29 additions and 0 deletions

View File

@ -141,6 +141,8 @@ my %cmd = (
'color' => \$Git::SVN::Log::color,
'pager=s' => \$Git::SVN::Log::pager,
} ],
'find-rev' => [ \&cmd_find_rev, "Translate between SVN revision numbers and tree-ish",
{ } ],
'rebase' => [ \&cmd_rebase, "Fetch and rebase your working directory",
{ 'merge|m|M' => \$_merge,
'verbose|v' => \$_verbose,
@ -428,6 +430,28 @@ sub cmd_dcommit {
command_noisy(@finish, $gs->refname);
}
sub cmd_find_rev {
my $revision_or_hash = shift;
my $result;
if ($revision_or_hash =~ /^r\d+$/) {
my $desired_revision = substr($revision_or_hash, 1);
my ($fh, $ctx) = command_output_pipe('rev-list', 'HEAD');
while (my $hash = <$fh>) {
chomp($hash);
my (undef, $rev, undef) = cmt_metadata($hash);
if ($rev && $rev eq $desired_revision) {
$result = $hash;
last;
}
}
command_close_pipe($fh, $ctx);
} else {
my (undef, $rev, undef) = cmt_metadata($revision_or_hash);
$result = $rev;
}
print "$result\n" if $result;
}
sub cmd_rebase {
command_noisy(qw/update-index --refresh/);
my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');