about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2014-04-16 23:54:06 -0700
committerEric Wong <normalperson@yhbt.net>2014-09-19 08:09:22 +0000
commit9b258e721b30785357535158a5aab4a7c7471ec9 (patch)
tree05c107ae917496e5f32fd7e2aee1da623f6ef75f
parent73409a2145e93b436d74a24b6e6d1850338bf3dd (diff)
downloadgit-svn-mergeinfo-speedups.tar.gz
Subversion can put mergeinfo on any sub-directory to track cherry-picks.
Since cherry-picks are not represented explicitly in git, git-svn should
just ignore it.

Signed-off-by: Jakob Stoklund Olesen <stoklund@2pi.dk>
-rw-r--r--perl/Git/SVN.pm29
1 files changed, 13 insertions, 16 deletions
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index abd51eadd2..b1a84d03cb 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -1210,7 +1210,7 @@ sub do_fetch {
         unless ($self->ra->gs_do_update($last_rev, $rev, $self, $ed)) {
                 die "SVN connection failed somewhere...\n";
         }
-        $self->make_log_entry($rev, \@parents, $ed, $last_rev);
+        $self->make_log_entry($rev, \@parents, $ed, $last_rev, $self->path);
 }
 
 sub mkemptydirs {
@@ -1859,21 +1859,18 @@ sub make_log_entry {
         my $untracked = $self->get_untracked($ed);
 
         my @parents = @$parents;
-        my $ps = $ed->{path_strip} || "";
-        for my $path ( grep { m/$ps/ } %{$ed->{dir_prop}} ) {
-                my $props = $ed->{dir_prop}{$path};
-                if ( $props->{"svk:merge"} ) {
-                        $self->find_extra_svk_parents
-                                ($ed, $props->{"svk:merge"}, \@parents);
-                }
-                if ( $props->{"svn:mergeinfo"} ) {
-                        my $mi_changes = $self->mergeinfo_changes
-                                ($parent_path || $path, $parent_rev,
-                                 $path, $rev,
-                                 $props->{"svn:mergeinfo"});
-                        $self->find_extra_svn_parents
-                                ($ed, $mi_changes, \@parents);
-                }
+        my $props = $ed->{dir_prop}{$self->path};
+        if ( $props->{"svk:merge"} ) {
+                $self->find_extra_svk_parents
+                        ($ed, $props->{"svk:merge"}, \@parents);
+        }
+        if ( $props->{"svn:mergeinfo"} ) {
+                my $mi_changes = $self->mergeinfo_changes
+                        ($parent_path, $parent_rev,
+                         $self->path, $rev,
+                         $props->{"svn:mergeinfo"});
+                $self->find_extra_svn_parents
+                        ($ed, $mi_changes, \@parents);
         }
 
         open my $un, '>>', "$self->{dir}/unhandled.log" or croak $!;