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 $!;