SOURCES: patch_minimizer - s/chunk/hunk/, some BUGS

sparky sparky at pld-linux.org
Thu Nov 23 04:26:49 CET 2006


Author: sparky                       Date: Thu Nov 23 03:26:49 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- s/chunk/hunk/, some BUGS

---- Files affected:
SOURCES:
   patch_minimizer (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/patch_minimizer
diff -u SOURCES/patch_minimizer:1.1 SOURCES/patch_minimizer:1.2
--- SOURCES/patch_minimizer:1.1	Thu Nov 23 04:22:26 2006
+++ SOURCES/patch_minimizer	Thu Nov 23 04:26:44 2006
@@ -7,6 +7,11 @@
 # (c) 2006 PLD Linux Distribution
 # Main author: sparky at pld-linux.org
 #
+# BUGS:
+#  - if patch contains more than one change for same file only one will be
+#    copied
+#  - works well only with patch prepared for -p1
+#  
 use strict;
 use warnings;
 
@@ -90,38 +95,38 @@
 	}
 	$split_patch[0] = [@comment];
 
-	my @chunk = (undef, undef, undef);
+	my @hunk = (undef, undef, undef);
 	my $l;
 	while ($l = shift @patch) {
 		if ($l =~ /^--- /) {
-			if (defined $chunk[2]) {
-				push @split_patch, [@chunk];
-				@chunk = (undef, undef, undef);
+			if (defined $hunk[2]) {
+				push @split_patch, [@hunk];
+				@hunk = (undef, undef, undef);
 			}
-			$chunk[0] = find_file_common($l, $chunk[2])
-				if defined $chunk[2];
-			$chunk[1] = $l;
+			$hunk[0] = find_file_common($l, $hunk[2])
+				if defined $hunk[2];
+			$hunk[1] = $l;
 			next;
 		}
-		if ($l =~ /^\+\+\+ / and defined $chunk[1]) {
-			$chunk[2] = $l;
-			$chunk[0] = find_file_common($chunk[1], $chunk[2]);
+		if ($l =~ /^\+\+\+ / and defined $hunk[1]) {
+			$hunk[2] = $l;
+			$hunk[0] = find_file_common($hunk[1], $hunk[2]);
 			next;
 		}
-		next unless defined $chunk[0];
+		next unless defined $hunk[0];
 		if ($l !~ /^[+-@ ]/) {
-			push @split_patch, [@chunk];
-			@chunk = (undef, undef, undef);
+			push @split_patch, [@hunk];
+			@hunk = (undef, undef, undef);
 			redo;
 		}
-		push @chunk, $l;
+		push @hunk, $l;
 	}
-	push @split_patch, [@chunk] if defined $chunk[0];
+	push @split_patch, [@hunk] if defined $hunk[0];
 
 	return \@split_patch
 }
 
-sub sort_chunks($$) {
+sub sort_hunks($$) {
 	my ($new, $old_files) = @_;
 	my $diff;
 	local $" = "";
@@ -129,24 +134,24 @@
 	shift @{$new};
 	my %new_hash = map { $_->[0] => $_ } @{$new};
 	
-	foreach my $oldchunk (@{$old_files}) {
-		my $f = $oldchunk->[0];
+	foreach my $oldhunk (@{$old_files}) {
+		my $f = $oldhunk->[0];
 		next unless exists $new_hash{$f};
-		my $newchunk = $new_hash{$f};
-		$diff .= "$oldchunk->[1]";
-		$diff .= "$oldchunk->[2]";
+		my $newhunk = $new_hash{$f};
+		$diff .= "$oldhunk->[1]";
+		$diff .= "$oldhunk->[2]";
 		
-		shift @{$newchunk};
-		shift @{$newchunk};
-		shift @{$newchunk};
-		$diff .= "@{$newchunk}";
+		shift @{$newhunk};
+		shift @{$newhunk};
+		shift @{$newhunk};
+		$diff .= "@{$newhunk}";
 		delete $new_hash{$f};
 	}
 	
 	foreach my $f (sort keys %new_hash) {
-		my $newchunk = $new_hash{$f};
-		shift @{$newchunk};
-		$diff .= "@{$newchunk}";
+		my $newhunk = $new_hash{$f};
+		shift @{$newhunk};
+		$diff .= "@{$newhunk}";
 	}
 	return $diff;
 }
@@ -155,7 +160,7 @@
 	my ($file) = @_;
 	my $old_files = get_files($file);
 	my $splat = split_patch($file);
-	my $new_diff = sort_chunks($splat, $old_files);
+	my $new_diff = sort_hunks($splat, $old_files);
 	rename $file, $file.".bak" or die "Can't rename file\n";
 	open F_OUT, ">", $file or die "Dupa: $!\n";
 	print F_OUT $new_diff;
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/patch_minimizer?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list