Re: [PATCH] git-svnimport symlink support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Herbert Valerio Riedel <hvr@xxxxxxx> writes:

> added svn:special symlink support for access methods other than
> direct-http

I think what the patch does makes sense.  When svn:special
exists, check if it is of form "link " and munge the way a
symlink is represented to match what we expect.  

My understanding is that currently there is any type of special
svn blob defined other than "link ", and dying rather than
punting and silently doing a wrong thing when we see something
else in the future makes sense to me as well.

Previously we were feeding "update-index --cacheinfo" with
'0755' and '0644', but this patch changes it to send
100755/100644; technically this is not necessary, because
create_ce_mode(m) makes it a regular file unless S_ISLNK(m), but
I think this is good for consistency.

Karl, Martin, Smurf, Comments?

> Signed-off-by: Herbert Valerio Riedel <hvr@xxxxxxx>
>
>
> ---
>
>  git-svnimport.perl |   18 ++++++++++++++++--
>  1 files changed, 16 insertions(+), 2 deletions(-)
>
> edb2adf980e2193570a6910efc01c7ac47dcf474
> diff --git a/git-svnimport.perl b/git-svnimport.perl
> index 4d5371c..60ed7ae 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);
>  
> -- 
> 1.1.3

-
: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]