Code

git-tag(1): -v option is a subcommand; fix code block
[git.git] / git-svn.perl
index 4be85768949f037a0a91c2b8a4ff9ce0e220ade3..6657e100fbbc3bd83e805b2440b1a7b61780c5f4 100755 (executable)
@@ -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";
                }