From: Eric Wong <normalperson@yhbt.net>
To: Junio C Hamano <junkio@cox.net>
Cc: Seth Falcon <sethfalcon@gmail.com>,
Alexander Klink <ak-git@cynops.de>,
git@vger.kernel.org
Subject: Re: git-svn failure when symlink added in svn
Date: Sun, 29 Apr 2007 23:31:33 -0700 [thread overview]
Message-ID: <20070430063133.GA14414@untitled> (raw)
In-Reply-To: <7vmz0qcuut.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
> Eric Wong <normalperson@yhbt.net> writes:
>
> > Junio C Hamano <junkio@cox.net> wrote:
> >> diff --git a/git-svn.perl b/git-svn.perl
> >> index 4be8576..cef6697 100755
> >> --- a/git-svn.perl
> >> +++ b/git-svn.perl
> >> @@ -2464,15 +2464,15 @@ sub close_file {
> >> my $hash;
> >> my $path = $self->git_path($fb->{path});
> >> if (my $fh = $fb->{fh}) {
> >> - seek($fh, 0, 0) or croak $!;
> >> + sysseek($fh, 0, 0) or croak $!;
> >> my $md5 = Digest::MD5->new;
> >> $md5->addfile($fh);
> >
> > We may want to keep the plain seek() here and do both seek and sysseek,
> > I'm not sure if $md5->addfile() uses read or sysread internally.
>
> Ok. The seek before Digest::MD5 can stay as it has been that
> way for a long time without causing problems. How about this as
> an replacement then?
Looks good to me. Seth?
If Seth is okay with it, then:
Acked-by: Eric Wong <normalperson@yhbt.net>
> -- >8 --
> [PATCH] Fix symlink handling in git-svn, related to PerlIO
>
> After reading the leading contents from a symlink data obtained
> from subversion, which we expect to begin with 'link ', the code
> forked to hash the remainder (which should match readlink()
> result) using git-hash-objects, by redirecting its STDIN from
> the filehandle we read that 'link ' from. This was Ok with Perl
> on modern Linux, but on Mac OS, the read in the parent process
> slurped more than we asked for in stdio buffer, and the child
> did not correctly see the "remainder".
>
> This attempts to fix the issue by using lower level sysseek and
> sysread instead of seek and read to bypass the stdio buffer.
>
> Signed-off-by: Junio C Hamano <junkio@cox.net>
> ---
> git-svn.perl | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/git-svn.perl b/git-svn.perl
> index 4be8576..6f509f8 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -2470,9 +2470,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";
> }
> --
> 1.5.2.rc0.781.g5868
--
Eric Wong
next prev parent reply other threads:[~2007-04-30 6:32 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-14 6:41 git-svn failure when symlink added in svn Seth Falcon
2007-04-14 20:10 ` Eric Wong
2007-04-16 3:13 ` Seth Falcon
2007-04-26 23:07 ` Alexander Klink
2007-04-27 18:03 ` Linus Torvalds
2007-04-28 13:02 ` Alexander Klink
2007-04-28 16:54 ` Seth Falcon
2007-04-28 17:31 ` Junio C Hamano
2007-04-28 18:13 ` Seth Falcon
2007-04-28 18:34 ` Junio C Hamano
2007-04-28 21:15 ` Seth Falcon
2007-04-28 22:43 ` Junio C Hamano
[not found] ` <m2irbfqlze.fsf@ziti.local>
2007-04-29 18:26 ` Eric Wong
2007-04-30 14:43 ` Seth Falcon
2007-04-30 15:43 ` Eric Wong
2007-05-01 17:49 ` Seth Falcon
2007-04-29 18:31 ` Eric Wong
2007-04-29 21:01 ` Junio C Hamano
2007-04-29 22:21 ` Eric Wong
2007-04-30 0:24 ` Alexander Klink
2007-04-30 5:08 ` Junio C Hamano
2007-04-30 6:31 ` Eric Wong [this message]
2007-04-30 14:33 ` Seth Falcon
2007-05-01 20:53 ` Alexander Klink
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070430063133.GA14414@untitled \
--to=normalperson@yhbt.net \
--cc=ak-git@cynops.de \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=sethfalcon@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.