Patch erzeugen (diff, patch)

Dev corner | Patch, diff | Eine kurze EinfĂĽhrung

"Einen Patch einspielen". "Eine Datei patchen". Diese Phrasen hört man häufig wenn es um Software geht, vor allem bei solcher, an der mehrere Personen beteiligt sind.
Ein Patch in diesem Kontext ist nichts anderes als eine Datei, welche die Ă„nderungen einer anderen Datei beschreibt. Also soetwas wie "Ersetze Zeile 3 mit einer leeren Zeile".
Beispiel:
Ich arbeite an einem sehr großen Code (sagen wir mal so um die 10 MB) und entdecke einen Bug, den ich beheben kann. Die Änderung ist ein Einzeiler. Ich möchte die Änderung an den Programm-Entwickler schicken.
Nun kann ich entweder die rießige Code-Datei (10 MB) an den Maintainer schicken, oder ich erstelle eine Datei, welche genau sagt, an welcher Stelle welche Änderungen zu erledigen sind (< 1 kByte).
Nun, Computerentwickler sind faul. Es wäre doch schön, wenn es ein Programm gibt, das eine solche Datei automatisch generiert und anwenden kann.
Hanau hier kommen diff und patch ins Spiel.

Anleitung

Beispielannahmen:

Originaldatei: original.c
Geänderte Datei: original_new.c

Patch erstellen

Die Datei original.c.patch beinhaltet nun alle Ă„nderungen relativ zu original.c.

Patch einspielen

Der Maintainer hat sich den Patch angeschaut und ist mit den Ă„nderungen einverstanden. Nun kann er seine Datei original.c mit der Datei original.c.patch patchen:

Patch und Diff im Einsatz in der Konsole
Patch und Diff im Einsatz in der Konsole

NĂĽtzliche Optionen

Notiz fĂĽr Eclipse

In Eclipse ist es bei GIT oder SVN-Projekten sehr einfach Patches zu erstellen oder einzuspielen:

Rechtsklick auf die Datei -> Team -> Create / Apply patch

Patchen und Patches anwenden in Eclipse
Patchen und Patches anwenden in Eclipse

nanoHttp Binary

FĂĽr nanoHttp steht ab sofort ein Binary zur VerfĂĽgung (ARMv7). Die Installation muss per Hand erledigt werden und richtet sich eher an fortgeschrittene Benutzer. Kentnisse mit ADB, einer Shell und root sind erforderlich.
Eine Installationsanleitung in Englisch findet sich im Paket.

[Paket downloaden]

Mit der aktuellen Version ist auch das Problem, dass das Program bei einem abgebrochenen Transfer abschmiert behoben worden.

nanoHttp

nanoHttp - Ein extrem einfacher Web-Server, geschrieben in C.

Primärer Einsatzzweck ist es einen einfachen Webserver auf meinem Android-Tablet zu haben, ohne einen Riesen wie kWS oder ähnliche zu installieren.

Cross-Compile fĂĽr Android (arm-linux-androideabi-gcc)

Erforderliche Pakete:

  • gcc-arm-linux-androideabi

Standartmäßig wird gcc zum kompilieren verwendet. Das entstehende Binary ist dadurch für dein System geschaffen.
Um nanoHttp für Android zu kompilieren muss nun ein anderer Compiler gewählt werden. Dazu kann einfach das Makefile editiert werden: Kommentar der folgenden Zeile entfernen und die CC=gcc-Zeile auskommentieren:

Nun ein einfaches make ausfĂĽhren

Und fertig 🙂

Installationspacket

Mitlerweile steht ein fertig kompiliertes Binary zum Download bereit. Die Installation muss per Hand erledigt werden, Anleitungen liegen jedoch im Packet.

Die Installation richtet sich eher an fortgeschrittene Benutzer, die sich mit ADB auskennen.