Re: [PATCH] git-svn: add a show-externals command.

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

 



Vineet Kumar <vineet@xxxxxxxxxxxx> wrote:
> show-externals can be used by scripts to provide svn:externals-like
> functionality.  For example, a script can list all of the externals and then
> use check out the listed URLs at the appropriate paths, similar to what the svn
> client does.  Said script (or perhaps git-svn itself, in the future) could
> simply invoke svn export on the paths, or it could go one further, using
> git-svn clone and even git-submodule together to better integrate externals
> checkouts.
> 
> The implementation is shamelessly copied from show-ignores.  A more general
> command to list user-specified properties is probably a better idea.
> 
> Signed-off-by: Vineet Kumar <vineet@xxxxxxxxxxxx>

Thanks.

Acked-by: Eric Wong <normalperson@xxxxxxxx>

I'm close to having svn:externals supported in git-svn, too.  But
previously cloned repositories probably won't support them
out-of-the-box, so this can still be useful.

> ---
>  git-svn.perl |   18 ++++++++++++++++++
>  1 files changed, 18 insertions(+), 0 deletions(-)
> 
> diff --git a/git-svn.perl b/git-svn.perl
> index 5b1deea..74966ed 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -141,6 +141,9 @@ my %cmd = (
>  	'show-ignore' => [ \&cmd_show_ignore, "Show svn:ignore listings",
>  			{ 'revision|r=i' => \$_revision
>  			} ],
> +	'show-externals' => [ \&cmd_show_externals, "Show svn:externals listings",
> +			{ 'revision|r=i' => \$_revision
> +			} ],
>  	'multi-fetch' => [ \&cmd_multi_fetch,
>  	                   "Deprecated alias for $0 fetch --all",
>  			   { 'revision|r=s' => \$_revision, %fc_opts } ],
> @@ -560,6 +563,21 @@ sub cmd_show_ignore {
>  	});
>  }
>  
> +sub cmd_show_externals {
> +	my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
> +	$gs ||= Git::SVN->new;
> +	my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
> +	$gs->prop_walk($gs->{path}, $r, sub {
> +		my ($gs, $path, $props) = @_;
> +		print STDOUT "\n# $path\n";
> +		my $s = $props->{'svn:externals'} or return;
> +		$s =~ s/[\r\n]+/\n/g;
> +		chomp $s;
> +		$s =~ s#^#$path#gm;
> +		print STDOUT "$s\n";
> +	});
> +}
> +
>  sub cmd_create_ignore {
>  	my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
>  	$gs ||= Git::SVN->new;
> -- 
> 1.5.3.4
> 
> -
> To unsubscribe from this list: 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

-- 
Eric Wong
-
To unsubscribe from this list: 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]

  Powered by Linux