summaryrefslogtreecommitdiff
path: root/git-svn.perl
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-04-30 17:16:19 -0700
committerJunio C Hamano <junkio@cox.net>2007-04-30 17:16:19 -0700
commit07c785dbb799ce7fa74686e776cd07d69c3ce01e (patch)
tree891c82a25aa3a5eb3b1e2391738059e3559a508f /git-svn.perl
parentfe5d30b6302369990499c428b28921b903153b81 (diff)
parentb5cc62f701abf8b903387a5d7c77a59f347d66fd (diff)
downloadgit-07c785dbb799ce7fa74686e776cd07d69c3ce01e.tar.gz
Merge branch 'maint'
* maint: GIT v1.5.1.3 send-email documentation: clarify --smtp-server git.7: Mention preformatted html doc location Clarify SubmittingPatches Checklist git-svn: Add 'find-rev' command Fix symlink handling in git-svn, related to PerlIO
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-xgit-svn.perl23
1 files changed, 11 insertions, 12 deletions
diff --git a/git-svn.perl b/git-svn.perl
index 4be8576894..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;
@@ -2470,9 +2469,9 @@ sub close_file {
my $got = $md5->hexdigest;
die "Checksum mismatch: $path\n",
"expected: $exp\n got: $got\n" if ($got ne $exp);
- seek($fh, 0, 0) or croak $!;
+ sysseek($fh, 0, 0) or croak $!;
if ($fb->{mode_b} == 120000) {
- read($fh, my $buf, 5) == 5 or croak $!;
+ sysread($fh, my $buf, 5) == 5 or croak $!;
$buf eq 'link ' or die "$path has mode 120000",
"but is not a link\n";
}