X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-svnimport.perl;h=60ed7ae3ee450878d8ef6dc3bf1f60670d1078d3;hb=23edecbc9a5566ac5aa8fb251fbcf8bb83694837;hp=4d5371ca901cb7579e454443958e8ca360763dbe;hpb=fcedc5a98643cedceb7e7ad3ddb5e3a5aa3dc593;p=git.git diff --git a/git-svnimport.perl b/git-svnimport.perl index 4d5371ca..60ed7ae3 100755 --- a/git-svnimport.perl +++ b/git-svnimport.perl @@ -98,6 +98,7 @@ package SVNconn; use File::Spec; use File::Temp qw(tempfile); use POSIX qw(strftime dup2); +use Fcntl qw(SEEK_SET); sub new { my($what,$repo) = @_; @@ -143,9 +144,22 @@ sub file { } my $mode; if (exists $properties->{'svn:executable'}) { - $mode = '0755'; + $mode = '100755'; + } elsif (exists $properties->{'svn:special'}) { + my ($special_content, $filesize); + $filesize = tell $fh; + seek $fh, 0, SEEK_SET; + read $fh, $special_content, $filesize; + if ($special_content =~ s/^link //) { + $mode = '120000'; + seek $fh, 0, SEEK_SET; + truncate $fh, 0; + print $fh $special_content; + } else { + die "unexpected svn:special file encountered"; + } } else { - $mode = '0644'; + $mode = '100644'; } close ($fh);