From: Junio C Hamano <junkio@cox.net>
To: Eric Wong <normalperson@yhbt.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 14:01:10 -0700 [thread overview]
Message-ID: <7vr6q2dhex.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <20070429183136.GE12375@untitled> (Eric Wong's message of "Sun, 29 Apr 2007 11:31:36 -0700")
Eric Wong <normalperson@yhbt.net> writes:
> Alexander: please don't drop me from the Cc next time, thanks.
>
> Junio C Hamano <junkio@cox.net> wrote:
>> Seth Falcon <sethfalcon@gmail.com> writes:
>> > Junio C Hamano <junkio@cox.net> writes:
>> > ...
>> >> Then I suspect the following could be less invasive and more
>> >> efficient fix for the problem. I do not have an access to MacOS
>> >> box, and I do not have a working sync with any SVN repository,
>> >> so I cannot test it myself, though...
>> ...
>>
>> Well, I think the sysseek should be done only when we did read
>> 'link ' from the beginning and not in other cases, so in that
>> sense my patch is very broken. Probably the sysseek() needs to
>> be done inside the "if ($fb->mode_b} == 120000)" part, after it
>> checks for 'link '.
>
> Yes, don't add the new sysseek there. All the reads and seeks in that
> block of code should probably be sysreads and sysseeks instead. Feel
> free to patch and test this as I don't have time at the moment.
Ok. As I do not have an access to a working sync with an SVN
repository nor a Mac OS box, I cannot test this, but something
like this should be applied to 'maint' before v1.5.1.3. I've
run testsuite we have including t9XXX series, but that is the
only test I did.
Testing, acks and feedback are very much appreciated.
-- >8 --
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 | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
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);
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";
}
next prev parent reply other threads:[~2007-04-29 21:01 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 [this message]
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
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=7vr6q2dhex.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=ak-git@cynops.de \
--cc=git@vger.kernel.org \
--cc=normalperson@yhbt.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).