diff options
author | Junio C Hamano <junkio@cox.net> | 2007-04-30 17:16:19 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-04-30 17:16:19 -0700 |
commit | 07c785dbb799ce7fa74686e776cd07d69c3ce01e (patch) | |
tree | 891c82a25aa3a5eb3b1e2391738059e3559a508f /git-svn.perl | |
parent | fe5d30b6302369990499c428b28921b903153b81 (diff) | |
parent | b5cc62f701abf8b903387a5d7c77a59f347d66fd (diff) | |
download | git-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-x | git-svn.perl | 23 |
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"; } |