Re: git-svn failure when symlink added in svn
- From
Junio C Hamano <junkio@cox.net>
- Date
- Apr 28, 2007, 17:31 UTC
- Message-ID
- <7virbgjthr.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <loom.20070428T144858-521@post.gmane.org>
Is it really the redirection that is the problem?
The process seeks $fh back to the beginning, reads 5 bytes from it (to ensure that is 'link '), and then forks to feed $fh to git-hash-object.
Now what do you really want to hash here? I do not know what this "file that begins with 'link '" magic is about, but I suspect that the child may or may not start reading from byte offset 5 of that file, depending on how the low-level I/O is tied to Perl.
Here is a little test script to imitate what the part in close_file sub is doing. What does it output on MacOS (or whatever systems that are having the same problem)?
On a Linux box, it appears that it reads the remainder of the file and the test script says "child says: >>12345", so I am assuming that is what close_file sub wants to do. If my suspicion is correct, you would get "child says: >>link 12345", in which case sysseek() commented out below would help, perhaps.
-- >8 -- #!/usr/bin/perl -w
open F, ">footest"; print F "link 12345\n"; close F;
my ($fh, $buf, $n, $pid, $out);
open $fh, "<footest"; seek($fh, 0, 0); $n = read($fh, $buf, 5); print "read[$n]: $buf\n";
$pid = open $out , '-|';
if (!$pid) {
my $at = tell $fh;
print "child: at $at\n"; # We may want to do
#
# sysseek($fh, 5, 0);
#
# here. open STDIN, '<&', $fh;
exec qw(sed -e s/^/>>/);
}
while (my $read = <$out>) {
print "child says: $read";
}
close ($out);
close ($fh);