Re: [PATCH] Don't checkout the full tree if avoidable

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

 



Steven Walter <stevenrwalter@xxxxxxxxx> writes:

> In most cases of branching, the tree is copied unmodified from the trunk
> to the branch.  When that is done, we can simply start with the parent's
> index and apply the changes on the branch as usual.
>
> Signed-off-by: Steven Walter <stevenrwalter@xxxxxxxxx>

Eric, do you like this one?

> ---
>  git-svn.perl |   18 ++++++++++++++++++
>  1 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/git-svn.perl b/git-svn.perl
> index 484b057..2ca2042 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -1847,6 +1847,13 @@ sub find_parent_branch {
>  			$gs->ra->gs_do_switch($r0, $rev, $gs,
>  					      $self->full_url, $ed)
>  			  or die "SVN connection failed somewhere...\n";
> +		} elsif ($self->trees_match($new_url, $r0,
> +			                    $self->full_url, $rev)) {
> +			$self->tmp_index_do(sub {
> +			    command_noisy('read-tree', $parent);
> +			});
> +			$self->{last_commit} = $parent;
> +			# Assume copy with no changes
>  		} else {
>  			print STDERR "Following parent with do_update\n";
>  			$ed = SVN::Git::Fetcher->new($self);
> @@ -1859,6 +1866,17 @@ sub find_parent_branch {
>  	return undef;
>  }
>  
> +sub trees_match {
> +    my ($self, $url1, $rev1, $url2, $rev2) = @_;
> +    
> +    my $ret=1;
> +    open(my $fh, "svn diff $url1\@$rev1 $url2\@$rev2 |");
> +    $ret=0 if (<$fh>);
> +    close($fh);
> +
> +    return $ret;
> +}
> +
>  sub do_fetch {
>  	my ($self, $paths, $rev) = @_;
>  	my $ed;
> -- 
> 1.5.3.1
-
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