git-svn: only look at the root path for svn:mergeinfo

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>

Jakob Stoklund Olesen committed Apr 16, 2014 at 23:54 UTC 9ee13a934e21380ff6082d98a86cab5e890418dc
1 file changed +13 -16
perl/Git/SVN.pm
+13 -16
@@ -1210,7 +1210,7 @@ sub do_fetch {
1210 unless ($self->ra->gs_do_update($last_rev, $rev, $self, $ed)) {
1211 die "SVN connection failed somewhere...\n";
1212 }
1213 - $self->make_log_entry($rev, \@parents, $ed, $last_rev);
1213 + $self->make_log_entry($rev, \@parents, $ed, $last_rev, $self->path);
1214 }
1215
1216 sub mkemptydirs {
@@ -1859,21 +1859,18 @@ sub make_log_entry {
1859 my $untracked = $self->get_untracked($ed);
1860
1861 my @parents = @$parents;
1862 - my $ps = $ed->{path_strip} || "";
1863 - for my $path ( grep { m/$ps/ } %{$ed->{dir_prop}} ) {
1864 - my $props = $ed->{dir_prop}{$path};
1865 - if ( $props->{"svk:merge"} ) {
1866 - $self->find_extra_svk_parents
1867 - ($ed, $props->{"svk:merge"}, \@parents);
1868 - }
1869 - if ( $props->{"svn:mergeinfo"} ) {
1870 - my $mi_changes = $self->mergeinfo_changes
1871 - ($parent_path || $path, $parent_rev,
1872 - $path, $rev,
1873 - $props->{"svn:mergeinfo"});
1874 - $self->find_extra_svn_parents
1875 - ($ed, $mi_changes, \@parents);
1876 - }
1862 + my $props = $ed->{dir_prop}{$self->path};
1863 + if ( $props->{"svk:merge"} ) {
1864 + $self->find_extra_svk_parents
1865 + ($ed, $props->{"svk:merge"}, \@parents);
1866 + }
1867 + if ( $props->{"svn:mergeinfo"} ) {
1868 + my $mi_changes = $self->mergeinfo_changes
1869 + ($parent_path, $parent_rev,
1870 + $self->path, $rev,
1871 + $props->{"svn:mergeinfo"});
1872 + $self->find_extra_svn_parents
1873 + ($ed, $mi_changes, \@parents);
1874 }
1875
1876 open my $un, '>>', "$self->{dir}/unhandled.log" or croak $!;