Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Roben <aroben@apple.com>2007-04-29 12:35:27 +0400
committerJunio C Hamano <junkio@cox.net>2007-05-01 02:58:37 +0400
commitb3cb7e4582410c7fcaa531a2283b43499eb8fb22 (patch)
tree1b52087bdabe11c003be531b6fa9454247ef5bad /git-svn.perl
parentbcd8ee5b4368594f2fe646c97d75a8bcdfb1d4e7 (diff)
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>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-xgit-svn.perl19
1 files changed, 9 insertions, 10 deletions
diff --git a/git-svn.perl b/git-svn.perl
index 6f509f85e4..6657e100fb 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -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;