git-svn: only look at the root path for svn:mergeinfo
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 17 Apr 2014 06:54:06 +0000 (23:54 -0700)
committerEric Wong <normalperson@yhbt.net>
Fri, 24 Oct 2014 22:55:29 +0000 (22:55 +0000)
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>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
perl/Git/SVN.pm
index abd51eadd2ea40d569535794662e0609ca12c698..b1a84d03cbaad657f7ef69f5e1c213ef6ea0e641 100644 (file)
@@ -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 $!;