[PATCH 2/5] git-svn: Make merge metadata accessible to make_log_entry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Alex Vandiver <alex@xxxxxxxxx>
---
 git-svn.perl |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index 53bf20c..5337326 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -2924,7 +2924,7 @@ sub check_author {
 }
 
 sub find_extra_svk_parents {
-	my ($self, $ed, $tickets, $parents) = @_;
+	my ($self, $ed, $tickets, $parents, $merges) = @_;
 	# aha!  svk:merge property changed...
 	my @tickets = split "\n", $tickets;
 	my @known_parents;
@@ -2944,14 +2944,15 @@ sub find_extra_svk_parents {
 				# wahey!  we found it, but it might be
 				# an old one (!)
 				push @known_parents, [ $rev, $commit ];
+				push @known_parents, [ $rev, $path, $commit ];
 			}
 		}
 	}
 	# Ordering matters; highest-numbered commit merge tickets
 	# first, as they may account for later merge ticket additions
 	# or changes.
-	@known_parents = map {$_->[1]} sort {$b->[0] <=> $a->[0]} @known_parents;
-	for my $parent ( @known_parents ) {
+	for my $merge ( sort {$b->[0] <=> $a->[0]} @known_parents ) {
+		my ($rev, $path, $parent) = @{$merge};
 		my @cmd = ('rev-list', $parent, map { "^$_" } @$parents );
 		my ($msg_fh, $ctx) = command_output_pipe(@cmd);
 		my $new;
@@ -2963,6 +2964,7 @@ sub find_extra_svk_parents {
 			print STDERR
 			    "Found merge parent (svk:merge ticket): $parent\n";
 			push @$parents, $parent;
+			push @$merges, "$path:$rev";
 		}
 	}
 }
@@ -3061,27 +3063,31 @@ sub make_log_entry {
 	my ($self, $rev, $parents, $ed) = @_;
 	my $untracked = $self->get_untracked($ed);
 
-	my @parents = @$parents;
+	my %log_entry = ( parents => $parents,
+	                  merged_branches => [],
+	                  revision => $rev,
+	                  log => '');
 	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);
+				($ed,
+				 $props->{"svk:merge"},
+				 $log_entry{parents},
+				 $log_entry{merged_branches});
 		}
 		if ( $props->{"svn:mergeinfo"} ) {
 			$self->find_extra_svn_parents
 				($ed,
 				 $props->{"svn:mergeinfo"},
-				 \@parents);
+				 $log_entry{parents});
 		}
 	}
 
 	open my $un, '>>', "$self->{dir}/unhandled.log" or croak $!;
 	print $un "r$rev\n" or croak $!;
 	print $un $_, "\n" foreach @$untracked;
-	my %log_entry = ( parents => \@parents, revision => $rev,
-	                  log => '');
 
 	my $headrev;
 	my $logged = delete $self->{logged_rev_props};
-- 
1.6.6.rc0.327.g032bc

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]