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:
parent
bb924cb331
commit
26e60160a0
@ -159,6 +159,11 @@ New features:
|
|||||||
Any other arguments are passed directly to `git log'
|
Any other arguments are passed directly to `git log'
|
||||||
|
|
||||||
--
|
--
|
||||||
|
'find-rev'::
|
||||||
|
When given an SVN revision number of the form 'rN', returns the
|
||||||
|
corresponding git commit hash. When given a tree-ish, returns the
|
||||||
|
corresponding SVN revision number.
|
||||||
|
|
||||||
'set-tree'::
|
'set-tree'::
|
||||||
You should consider using 'dcommit' instead of this command.
|
You should consider using 'dcommit' instead of this command.
|
||||||
Commit specified commit or tree objects to SVN. This relies on
|
Commit specified commit or tree objects to SVN. This relies on
|
||||||
|
24
git-svn.perl
24
git-svn.perl
@ -141,6 +141,8 @@ my %cmd = (
|
|||||||
'color' => \$Git::SVN::Log::color,
|
'color' => \$Git::SVN::Log::color,
|
||||||
'pager=s' => \$Git::SVN::Log::pager,
|
'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",
|
'rebase' => [ \&cmd_rebase, "Fetch and rebase your working directory",
|
||||||
{ 'merge|m|M' => \$_merge,
|
{ 'merge|m|M' => \$_merge,
|
||||||
'verbose|v' => \$_verbose,
|
'verbose|v' => \$_verbose,
|
||||||
@ -428,6 +430,28 @@ sub cmd_dcommit {
|
|||||||
command_noisy(@finish, $gs->refname);
|
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 {
|
sub cmd_rebase {
|
||||||
command_noisy(qw/update-index --refresh/);
|
command_noisy(qw/update-index --refresh/);
|
||||||
my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
|
my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
|
||||||
|
Loading…
Reference in New Issue
Block a user