git-svn: support -C<num> passing to git-diff-tree
[gitweb.git] / contrib / git-svn / git-svn.perl
index 8bc3d69fdb020eb3d4e036d8a17d3799cc645996..089d597d25d86ce389be225c152fc2c81e3dbdf3 100755 (executable)
@@ -33,7 +33,8 @@
 my $sha1 = qr/[a-f\d]{40}/;
 my $sha1_short = qr/[a-f\d]{4,40}/;
 my ($_revision,$_stdin,$_no_ignore_ext,$_no_stop_copy,$_help,$_rmdir,$_edit,
-       $_find_copies_harder, $_l, $_version, $_upgrade, $_authors);
+       $_find_copies_harder, $_l, $_cp_similarity,
+       $_version, $_upgrade, $_authors);
 my (@_branch_from, %tree_map, %users);
 my ($_svn_co_url_revs, $_svn_pg_peg_revs);
 
@@ -55,6 +56,7 @@
                                'rmdir' => \$_rmdir,
                                'find-copies-harder' => \$_find_copies_harder,
                                'l=i' => \$_l,
+                               'copy-similarity|C=i'=> \$_cp_similarity,
                                %fc_opts,
                        } ],
        'show-ignore' => [ \&show_ignore, "Show svn:ignore listings", { } ],
@@ -309,9 +311,16 @@ sub commit {
        }
        chomp @revs;
 
-       fetch();
-       chdir $SVN_WC or croak $!;
+       chdir $SVN_WC or croak "Unable to chdir $SVN_WC: $!\n";
        my $info = svn_info('.');
+       my $fetched = fetch();
+       if ($info->{Revision} != $fetched->{revision}) {
+               print STDERR "There are new revisions that were fetched ",
+                               "and need to be merged (or acknowledged) ",
+                               "before committing.\n";
+               exit 1;
+       }
+       $info = svn_info('.');
        read_uuid($info);
        my $svn_current_rev =  $info->{'Last Changed Rev'};
        foreach my $c (@revs) {
@@ -573,7 +582,12 @@ sub svn_checkout_tree {
        my $pid = open my $diff_fh, '-|';
        defined $pid or croak $!;
        if ($pid == 0) {
-               my @diff_tree = qw(git-diff-tree -z -r -C);
+               my @diff_tree = qw(git-diff-tree -z -r);
+               if ($_cp_similarity) {
+                       push @diff_tree, "-C$_cp_similarity";
+               } else {
+                       push @diff_tree, '-C';
+               }
                push @diff_tree, '--find-copies-harder' if $_find_copies_harder;
                push @diff_tree, "-l$_l" if defined $_l;
                exec(@diff_tree, $from, $treeish) or croak $!;