Re: git-svn failure when symlink added in svn
- From
Junio C Hamano <junkio@cox.net>
- Date
- Apr 28, 2007, 18:34 UTC
- Message-ID
- <7v7irwjql6.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <m2odl8fjv1.fsf@ziti.fhcrc.org>
Seth Falcon <sethfalcon@gmail.com> writes:
Show 5 quoted lines
> On OS X, I get: > > ziti:~/temp seth$ ./perltest1.pl > read[5]: link > child says: child: at 5
Ah, so the previous read($fh, $buf, 5) lets stdio absorb the whole (short) input, and the underlying seek pointer is not adjusted back across fork, and the child does not have anything to read.
Show 6 quoted lines
> And uncommenting the sysseek call, I get: > > ziti:~/temp seth$ ./perltest1.pl > read[5]: link > child says: child: at 5 > child says: >>12345
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...
diff --git a/git-svn.perl b/git-svn.perl index 7b5f8ab..e487da6 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2454,6 +2454,7 @@ sub close_file { } defined(my $pid = open my $out,'-|') or die "Can't fork: $!\n"; if (!$pid) { + sysseek($fh, 5, 0); open STDIN, '<&', $fh or croak $!; exec qw/git-hash-object -w --stdin/ or croak $!; }