Skip to content
Permalink
Browse files
add fixdiff.pl to convert svn diff from other architectures
git-svn-id: http://svn.osgeo.org/qgis/trunk@8395 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
jef committed May 2, 2008
1 parent 80a5f66 commit f007fe0fe58a90040f84548746fe262628c520c9
Showing with 54 additions and 0 deletions.
  1. +54 −0 scripts/fixdiff.pl
@@ -0,0 +1,54 @@
#!/usr/bin/perl

# NAME
# fixdiff.pl - fix line endings in svn diff to match lineending of existing files
# SYNOPSIS
# perl fixdiff.pl a.diff | patch -p0 ...
# DESCRIPTION:
# parse diff and modify the hunks to match the line ending of the target files
# This is useful, when the compared trees to generate the diff are on a
# different architecture than that of the one where the patch is to be
# applied.
# LICENSE:
# Copyright 2008 Jürgen E. Fischer <jef@norbit.de>
# GPL2

use strict;
use warnings;

my $dos;

while(<>) {
if( /^Index: (.*)\n/ ) {
my $file=$1;
$dos=0;

if(-f $file) {
open F, $file;
binmode(F);
$dos=1 if scalar(<F>) =~ /\r\n$/;
close F;

#warn "$file in DOS mode!" if $dos;
} else {
warn "$file not found.";
}
} elsif(/^$/) {
# skip empty lines
next;
} elsif(/^===================================================================/ ||
/^---/ ||
/^\+\+\+/ ||
/^@@/) {
print;
} elsif($dos && !/\r\n$/) {
chop;
print "$_\r\n";
} elsif(!$dos && /\r\n$/) {
chop;
chop;
print "$_\n";
} else {
print;
}
}

0 comments on commit f007fe0

Please sign in to comment.