Inhaltsverzeichnis

DIFF - PATCH - Autopatch Sourcefiles

PF = Patchfiles

Es handelt sich hier um ein Script, welches bei Debian/GNU auf dessen PF angewendet werden kann. Die PF müssen die Endung .diff haben. Das Script macht keine Fehlerbehandlung.

patcher.sh
#! /bin/bash
SRC=$1
DST=$2
_datei=`find $SRC -type f`
_dir=`find $SRC -type d`
CNT=${#SRC}
PATCHES=0
function cut_dir ()
{
        H=$1
        CNT_H=${#H}
        DIR=${H:$CNT:$CNT_H}
}
function cut_file()
{
        cut_dir $1
        FILE=$DIR
        CNT_H=${#FILE}
        SFX=${FILE:$CNT_H-5:5}
        FILE=${FILE:0:$CNT_H-5}
}
for DIR in $_dir ; do
                cut_dir $DIR
        if [ ! -d $DST$DIR ] ; then
                echo create dst-directory structure: $DST$DIR
                mkdir -p $DST$DIR
        fi
done
echo beginn patch files
for FILE in $_datei ; do
        cut_file $FILE
        patch $DST$FILE < $FILE$SFX
        let PATCHES=$PATCHES+1
done
echo $PATCHES files patched
exit 0

Beispiel:

#patcher /path/to/diffdir /path/to/destdir

DIFF erstellen

Will man selber einen DIFF erstellen, so nutzt man das Programm diff

#diff -uN alte_datei neue_datei > /path/to/diff_datei.diff

Man erhält eine Datei, mit den nötigen Informationen

PATCH - anwenden

Um ein DIFF auf eine Datei anzuwenden … einfach das Programm patch installieren.

#patch /path/to/alte_datei < /path/to/neue_datei.diff

Nach diesem Aufruf erthält die /path/to/alte_datei alle Änderungen.

TAGS