--- svn_load_dirs.pl.orig 2005-02-11 13:10:31.000000000 +0100 +++ svn_load_dirs.pl 2005-02-11 16:30:07.570367392 +0100 @@ -574,7 +574,7 @@ "type for '$source_path'.\n"; } - if ($source_type ne 'f' and $source_type ne 'd') + if ($source_type ne 'f' and $source_type ne 'd' and $source_type ne 'l') { warn "$0: skipping loading file '$source_path' of type ", "'$source_type'.\n"; @@ -898,7 +898,7 @@ my ($source_type, $source_is_exe) = &file_info($source_path); my ($dest_type) = &file_info($dest_path); - return if ($source_type ne 'd' and $source_type ne 'f'); + return if ($source_type ne 'd' and $source_type ne 'f' and $source_type ne 'l'); # Fail if the destination type exists but is of a different # type of file than the source type. @@ -966,7 +966,7 @@ # Ignore properties that do not apply to # files. - if ($source_type eq 'f') + if ($source_type eq 'f' or $source_type eq 'l') { if ($property_name eq 'svn:externals' or $property_name eq 'svn:ignore') @@ -1018,6 +1018,16 @@ or die "$0: copy '$source_path' to '$dest_path': $!\n"; } } + elsif + ($source_type eq 'l') { + # Only copy the file if the digests do not match. + if ($add_files{$source_path} or $upd_files{$source_path}) + { + system("cp -d $source_path $dest_path"); + # XXX for some reason we would always die here + #or die "$0: copy symlink '$source_path' to '$dest_path': $!\n"; + } + } else { die "$0: does not handle copying files of type '$source_type'.\n";