Manuals

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 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. Statt 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, die in den Patch aufgenommen werden sollen, genau wie bei einer vollständigen Übertragung. Dadurch wird eine einzige Datei erzeugt, die eine Zusammenfassung aller Änderungen enthält, die Sie seit der letzten Aktualisierung an den ausgewählten Dateien aus dem Projektarchiv vorgenommen haben.

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 Schaltfläche Optionen können Sie festlegen, wie der Patch erstellt wird. Sie können z. B. angeben, dass Änderungen bei Zeilenenden oder Leerzeichen nicht in die endgültige Patch-Datei eingeschlossen werden sollen.

Sie können separate Patches für die verschiedenen Änderungen an den Dateien erzeugen. 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 soweit. Sie können Ihre Patchdatei an die Entwickler schicken.

Tipp

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

Sie können den Patch auch in der Zwischenablage statt 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 des Übertragen- oder des Auf Änderungen prüfen-Dialogs erstellen. Wählen Sie einfach die Dateien und erzeugen Sie per Kontextmenü einen Patch für diese Dateien. Wenn 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 Ordner doc/source/ anwenden. Wenn 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. 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 Dialog TortoiseSVNErzeuge Patch... heraus in die Zwischenablage kopiert haben. Wenn Sie einen Patch auf andere Art in die Zwischenablage kopieren, erscheint die Schaltfläche nicht.

Wenn die Patchdatei die Erweiterung .patch oder .diff 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 das gleiche 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 listet die Dateien auf, die geändert wurden. Doppelklicken Sie nacheinander auf jede einzelne, überprüfen Sie die Änderungen und speichern Sie die zusammengeführten Dateien.

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

TortoiseSVN homepage