Erzeugen und Anwenden von Patches

In Open Source Projekten (wie diesem) hat jedermann Lesezugriff auf das Projektarchiv, und jeder kann einen Beitrag zum Projekt leisten. Wie sollen diese Beiträge nun kontrolliert werden? Wenn jeder stets seine Änderungen in das Projektarchiv übertragen würde, wäre das Projekt permanent instabil und wahrscheinlich sogar nicht funktionsfähig. Dieses Problem wird gelöst, indem ein Patch an das Entwicklerteam geschickt wird. Die Entwickler können den Patch überprüfen und dann entweder in das Projektarchiv übertragen oder verwerfen und an den Autor zurückschicken.

Bei Patchdateien handelt es sich um einfache Standard-Diff Dateien, die die Unterschiede zwischen Ihrer Arbeitskopie und der Basisrevision beinhalten.

Eine Patch-Datei erstellen

Zunächst müssen Sie Ihre Änderungen selbstverständlich selber testen. Anstatt den übergeordneten Ordner zum Projektarchiv zu TortoiseSVNÜbertragen..., wählen Sie TortoiseSVNPatch erzeugen...

Abbildung 4.60. Der Erzeuge Patch-Dialog.

Der „Erzeuge Patch“-Dialog.

Sie können nun die Dateien auswählen, welche Sie in dem Patch drin haben möchten. Genauso wie wenn sie die Dateien übertragen würden. Dies wird eine Datei erstellen mit all den Änderungen seit der letzten Übertragung der ausgewählten Dateien.

Die Spalten in diesem Dialog können, genau wie im Auf Änderungen prüfen-Dialog, angepasst werden. Lesen Sie in „Prüfe auf Änderungen“ nach, wie das geht.

Durch Klicken auf die Optionen Schaltfläche können Sie festlegen, wie der Patch erstellt wird. Sie können z. B. angeben, dass Änderungen in Zeilenenden oder Leerzeichen nicht in die endgültige Patch-Datei eingeschlossen werden sollen.

Sie können separate Patches erzeugen für die verschiedenen Änderungen an den Dateien. Wenn Sie jedoch eine Patchdatei erstellen, dann weitere Änderungen an denselben Dateien vornehmen und eine weitere Patchdatei erstellen, wird die zweite Patchdatei beide Sätze von Änderungen enthalten.

Speichern Sie die Datei unter einem Namen Ihrer Wahl. Patchdateien können jede beliebige Dateiendung haben. Eine Konvention ist jedoch, .patch dafür zu verwenden. Nun Sind Sie so weit. Sie können Ihre Patchdatei an die Entwickler schicken.

Tipp

Speichern Sie die Patchdatei nicht mit einer .txt Erweiterung, wenn Sie vorhaben, sie per Email zu verschicken. Einfache Textdateien werden oft durch die Emailprogramme umformatiert und der Patch lässt sich anschließend nicht mehr anwenden. Benutzen Sie bitter .patch oder .diff als Endungen, wenn Sie die Datei speichern.

Sie können den Patch auch in der Zwischenablage anstatt einer Datei speichern, zum Beispiel weil Sie den Patch per E-Mail zur Begutachtung weiterschicken wollen. Auch wenn sie zwei Arbeitskopien auf einem Rechner haben und gezielt Änderungen von einer in die andere übertragen wollen, ist ein Patch in der Zwischenablage der bequemste Weg.

Wenn Sie es vorziehen, können sie eine Patchdatei innerhalb der Übertragen oder des Auf Änderungen prüfen Dialoge erstellen. Wählen Sie einfach die Dateien und erzeugen Sie per Kontextmenü einen Patch für diese Dateien. Falls Sie die Optionen verändern wollen, halten Sie die Umschalt-Taste während des Rechtsklicks gedrückt.

Eine Patchdatei anwenden

Patchdateien werden stets innerhalb Ihrer Arbeitskopie angewendet. Dies muss innerhalb desselben Ordners durchgeführt werden, in dem die Patchdatei erstellt wurde. Wenn Sie nicht genau wissen, welcher Ordner das war, schauen Sie in die erste Zeile der Patchdatei. Wenn z.B. die erste bearbeitete Datei doc/source/deutsch/kapitel1.xml hieß und die erste Zeile in der Patchdatei Index: deutsch/kapitel1.xml lautet, dann müssen sie den Patch auf den doc/source/ Ordner anwenden. Falls Sie den Patch in der richtigen Arbeitskopie aber nicht im richtigen Ordner anwenden, wird TortoiseSVN das bemerken und den Pfad vorschlagen, den es für richtig hält.

Um den Patch anwenden zu können, benötigen Sie zumindest Lesezugriff auf das Projektarchiv, denn das Programm zum Zusammenführen (Patchen) der Daten muss eventuell auf dieses zurückgreifen, um die Änderungen auf die Revision im Projektarchiv zurückzuführen, auf der sie basieren.

Vom Kontextmenü des betroffenen Ordners aus wählen Sie TortoiseSVNPatch anwenden... Dies öffnet einen Dateidialog von TortoiseMerge, in dem sie die anzuwendende Patchdatei auswählen können. Standardmäßig werden nur .patch Dateien angezeigt, aber sie können auch Alle Dateien auswählen. Wenn Sie einen Patch in der Zwischenablage gespeichert haben, können Sie Aus Zwischenablage öffnen... im Datei Öffnen-Dialog aufrufen. Beachten Sie bitte, dass diese Option nur zur Verfügung steht, wenn Sie den Patch aus dem TortoiseSVNErzeuge Patch... Dialog heraus in die Zwischenablage kopiert haben. Wenn Sie einen Patch auf andere Art in die Zwischenablage kopieren, erscheint die Schaltfläche nicht.

Falls die Patchdatei einen .patch oder .diff Anhang hat, können Sie mit einem Rechtsklick auf die Datei direkt TortoiseSVNPatch anwenden... wählen. In diesem Fall werden Sie gebeten, eine Arbeitskopie anzugeben.

Dies sind zwei verschiedene Wege, um dasselbe Ziel zu erreichen. Mit der ersten Methode geben Sie die Arbeitskopie vor und suchen die Patchdatei. Mit der zweiten Methode geben Sie die Patchdatei vor und suchen die Arbeitskopie.

Sobald Sie eine Datei gewählt haben, wird TortoiseMerge gestartet, um die Änderungen in Ihrer Arbeitskopie zusammenzuführen. Ein kleines Fenster zeigt die Liste der Dateien an, die durch die Patchdatei geändert würden. Führen Sie einen Doppelklick auf die einzelnen Dateien aus und die Änderungen aus der Patchdatei werden mit Ihrer Arbeitskopie zusammengeführt. Prüfen Sie die Änderungen und speichern Sie die geänderten Dateien.

Die Patchdatei wurde nun in Ihrer Arbeitskopie angewendet, so dass die Veränderungen nun zum Projektarchiv übertragen werden müssen, um anderen Projektteilnehmern zur Verfügung zu stehen.