зеркало из https://github.com/microsoft/git.git
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:
Родитель
bb924cb331
Коммит
26e60160a0
|
@ -159,6 +159,11 @@ New features:
|
|||
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'::
|
||||
You should consider using 'dcommit' instead of this command.
|
||||
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,
|
||||
'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');
|
||||
|
|
Загрузка…
Ссылка в новой задаче