Skip to content

Commit

Permalink
git-svn: Add 'find-rev' command
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Adam Roben authored and Junio C Hamano committed Apr 30, 2007
1 parent bcd8ee5 commit b3cb7e4
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
5 changes: 3 additions & 2 deletions Documentation/git-svn.txt
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,9 @@ 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.
corresponding git commit hash (this can optionally be followed by a
tree-ish to specify which branch should be searched). When given a
tree-ish, returns the corresponding SVN revision number.

'set-tree'::
You should consider using 'dcommit' instead of this command.
Expand Down
19 changes: 9 additions & 10 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -434,17 +434,16 @@ 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;
}
my $head = shift;
$head ||= 'HEAD';
my @refs;
my (undef, undef, undef, $gs) = working_head_info($head, \@refs);
unless ($gs) {
die "Unable to determine upstream SVN information from ",
"$head history\n";
}
command_close_pipe($fh, $ctx);
my $desired_revision = substr($revision_or_hash, 1);
$result = $gs->rev_db_get($desired_revision);
} else {
my (undef, $rev, undef) = cmt_metadata($revision_or_hash);
$result = $rev;
Expand Down

0 comments on commit b3cb7e4

Please sign in to comment.