git-svn: Add '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>maint
parent
bcd8ee5b43
commit
b3cb7e4582
|
@ -161,8 +161,9 @@ Any other arguments are passed directly to `git log'
|
||||||
--
|
--
|
||||||
'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
|
||||||
corresponding git commit hash. When given a tree-ish, returns the
|
corresponding git commit hash (this can optionally be followed by a
|
||||||
corresponding SVN revision number.
|
tree-ish to specify which branch should be searched). 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.
|
||||||
|
|
19
git-svn.perl
19
git-svn.perl
|
@ -434,17 +434,16 @@ sub cmd_find_rev {
|
||||||
my $revision_or_hash = shift;
|
my $revision_or_hash = shift;
|
||||||
my $result;
|
my $result;
|
||||||
if ($revision_or_hash =~ /^r\d+$/) {
|
if ($revision_or_hash =~ /^r\d+$/) {
|
||||||
my $desired_revision = substr($revision_or_hash, 1);
|
my $head = shift;
|
||||||
my ($fh, $ctx) = command_output_pipe('rev-list', 'HEAD');
|
$head ||= 'HEAD';
|
||||||
while (my $hash = <$fh>) {
|
my @refs;
|
||||||
chomp($hash);
|
my (undef, undef, undef, $gs) = working_head_info($head, \@refs);
|
||||||
my (undef, $rev, undef) = cmt_metadata($hash);
|
unless ($gs) {
|
||||||
if ($rev && $rev eq $desired_revision) {
|
die "Unable to determine upstream SVN information from ",
|
||||||
$result = $hash;
|
"$head history\n";
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
command_close_pipe($fh, $ctx);
|
my $desired_revision = substr($revision_or_hash, 1);
|
||||||
|
$result = $gs->rev_db_get($desired_revision);
|
||||||
} else {
|
} else {
|
||||||
my (undef, $rev, undef) = cmt_metadata($revision_or_hash);
|
my (undef, $rev, undef) = cmt_metadata($revision_or_hash);
|
||||||
$result = $rev;
|
$result = $rev;
|
||||||
|
|
Loading…
Reference in New Issue