Subject: Re: [PATCH] git-svn: add fetch --parent option

From: Eric Wong <[email-masked]>
Date: Tue, 7 Apr 2009 19:14:08 -0700

Jason Merrill <[email-masked]> wrote:
> Signed-off-by: Jason Merrill <[email-masked]>
> ---
> rebase fetches only the SVN parent of the current HEAD; it should
> be possible to do that with fetch as well, for instance to support
> rebasing with stg rebase rather than git rebase.

Hi Jason, the above should be in the commit message.

Otherwise, Acked-by: Eric Wong <[email-masked]>

Thanks

>  Documentation/git-svn.txt |    3 +++
>  git-svn.perl              |   18 ++++++++++++++----
>  2 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
> index b7b1af8..85b2c8d 100644
> --- a/Documentation/git-svn.txt
> +++ b/Documentation/git-svn.txt
> @@ -97,6 +97,9 @@ COMMANDS
>  	makes 'git-log' (even without --date=local) show the same times
>  	that `svn log` would in the local timezone.
>  
> +--parent;;
> +	Fetch only from the SVN parent of the current HEAD.
> +
>  This doesn't interfere with interoperating with the Subversion
>  repository you cloned from, but if you wish for your local Git
>  repository to be able to interoperate with someone else's local Git
> diff --git a/git-svn.perl b/git-svn.perl
> index d919798..cb718b8 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -63,7 +63,7 @@ $sha1_short = qr/[a-f\d]{4,40}/;
>  my ($_stdin, $_help, $_edit,
>  	$_message, $_file,
>  	$_template, $_shared,
> -	$_version, $_fetch_all, $_no_rebase,
> +	$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
>  	$_merge, $_strategy, $_dry_run, $_local,
>  	$_prefix, $_no_checkout, $_url, $_verbose,
>  	$_git_format, $_commit_url, $_tag);
> @@ -112,6 +112,7 @@ my %cmd = (
>  	fetch => [ \&cmd_fetch, "Download new revisions from SVN",
>  			{ 'revision|r=s' => \$_revision,
>  			  'fetch-all|all' => \$_fetch_all,
> +			  'parent|p' => \$_fetch_parent,
>  			   %fc_opts } ],
>  	clone => [ \&cmd_clone, "Initialize and fetch revisions",
>  			{ 'revision|r=s' => \$_revision,
> @@ -381,12 +382,21 @@ sub cmd_fetch {
>  	}
>  	my ($remote) = @_;
>  	if (@_ > 1) {
> -		die "Usage: $0 fetch [--all] [svn-remote]\n";
> +		die "Usage: $0 fetch [--all] [--parent] [svn-remote]\n";
>  	}
> -	$remote ||= $Git::SVN::default_repo_id;
> -	if ($_fetch_all) {
> +	if ($_fetch_parent) {
> +		my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
> +		unless ($gs) {
> +			die "Unable to determine upstream SVN information from ",
> +			    "working tree history\n";
> +		}
> +	        # just fetch, don't checkout.
> +		$_no_checkout = 'true';
> +		$_fetch_all ? $gs->fetch_all : $gs->fetch;
> +	} elsif ($_fetch_all) {
>  		cmd_multi_fetch();
>  	} else {
> +		$remote ||= $Git::SVN::default_repo_id;
>  		Git::SVN::fetch_all($remote, Git::SVN::read_all_remotes());
>  	}
>  }
> --