Mit Patches arbeiten
Mit Patches können Entwickler ihre Arbeit gemeinsam benutzen ohne sie in einem Repository zu speichern.
Dies ist nützlich, wenn ein Entwickler ein Projekt ergänzen will, das über ein Repository gemeinsam
benutzt wird, er aber keinen Schreibzugriff für das Repository besitzt. In diesem Fall kann der Entwickler
einen Patch erstellen und diesen über E-Mail an einen Entwickler senden, der über Schreibzugriff verfügt oder
an einen Programmfehler im Berichtssystem für Programmfehler anhängen, das im Projekt verwendet wird. Diese
Entscheidung ist abhängig vom im Projekt definierten Prozess. Ein Entwickler mit Schreibzugriff kann den Patch anschließend auf das Projekt anlegen und die Änderungen festschreiben.
So erstellen Sie einen Patch in einem CVS-Projekt:
- Wählen Sie die Ressource aus, die die Änderungen enthält, die im Patch enthalten sein sollen. Sie können Ressourcen auswählen, die sich in mehreren Projekten und auf einer beliebigen Ebene befinden, da der Assistent "Patch erstellen" bei der Ausführung im Standardmodus einen Patch für mehrere Projekte erstellen kann. Der Patch muss außerdem für dieselben
Dateiüberarbeitungen angelegt werden, in denen er generiert wurde, damit sichergestellt werden kann, dass
der Patch für die gleiche Ressourcenkontinuität angelegt wird (dies geschieht am einfachsten, wenn Sie den
Patch über eine Version erstellen).
- Wählen Sie im Dialogfenster Team > Patch erstellen... aus. Der Assistent für das Erstellen
von Patches wird geöffnet.
- Wählen Sie aus, wo der Patch gespeichert werden soll:
- In Zwischenablage speichern - Der Patch wird in der Zwischenablage platziert, damit er in
einen Texteditor (z. B. ein E-Mail-Programm) eingefügt werden kann.
- In Dateisystem speichern - Der Patch wird in der angegebenen Datei im lokalen Dateisystem
platziert.
- Im Arbeitsbereich speichern - Der Patch wird in der angegebenen Datei in einem der bestehenden
Workbench-Projekte platziert.
Im Falle von kleinen Patches ist es sinnvoll, den Patch mit der Zwischenablage zu übertragen, doch in den
meisten Fällen ist das lokale Dateisystem die bessere Option.
- Zur Vorschau und Feinabstimmung der Patchauswahl erweitern Sie die Baumstruktur "Ressourcen" im Teilfenster "Änderungen". Nur die ausgewählten Elemente werden in den Pfad aufgenommen. Klicken Sie auf Weiter, um die Generierung
des Patches zu konfigurieren.
- Wählen Sie aus, wie der Pfad konfiguriert werden soll:
- Ausgabeformat der Diff-Datei - Diese Option ermöglicht die Auswahl mehrerer gemeinsamer
Diff-Ausgabeformate. Das Unified-Format wird von vielen Tools zum Anlegen von Patches verwendet, einschließlich
Eclipse. Das für Kontext- und Unified-Diff-Dateien verwendete Format ermöglicht die Anwendung eines Patches, auch wenn die für das Stück erwähnte Zeilennummer (Patchterminologie) falsch ist. In diesem Fall sucht der Algorithmus bei der Anwendung des Patches sowohl vorwärts als auch rückwärts nach einer Gruppe von Zeilen, die mit dem angegebenen Kontext des Stücks übereinstimmen.
- Stammverzeichnis des Patches: Mit dieser Option können Sie angeben, auf welcher Ebene das Stammverzeichnis den Patch darstellt. Zur Auswahl stehen die Werte Arbeitsbereich, Projekt und Auswahl.
Bei Verwendung des Wertes Arbeitsbereich können Sie Ressourcen aus mehreren Projekten in den Patch aufnehmen. Dies ist die Standardeinstellung für die Option. Patches des Arbeitsbereichs können auf jede beliebige Ressource im Arbeitsbereich anwewendet werden, denn sie enthalten genügend Informationen, mit denen der Assistent "Patch anwenden" erkennen kann, auf welche Ressourcen der Patch angewendet werden muss.
Das Stammverzeichnis eines Patches mit der Einstellung Projekt ist die Projektebene. Dies bedeutet, dass der Patch nur Ressourcen aus einem Projekt enthalten kann und auf dieses Projekt anwendet werden muss.
Das Stammverzeichnis für Patches mit der Einstellung Auswahl ist das der jeweils ausgewählten Ressource. Diese Patches müssen auf dieselbe Ressource anwendet werden.
- Klicken Sie auf Fertig stellen.
- Übertragen Sie den Patch dem Projekt entsprechend, das korrigiert werden soll.
So wenden Sie einen Patch an:
- Wählen Sie die Ressource aus, für die der Patch generiert wurde. Diese Ressource sollte dieselben Dateiüberarbeitungen enthalten wie die Konfiguration, anhand der der Patch generiert wurde.
- Wählen Sie im Kontextmenü Team > Patch anwenden... aus. Der Assistent 'Patch anwenden' wird geöffnet.
Dies kann auch erreicht werden, indem der Patch-Inhalt in die Zwischenablage kopiert und durch Auswahl von Bearbeiten > Einfügen direkt in die Ansicht
'Paketexplorer' eingefügt wird.
In diesem Fall können Sie den nächsten Schritt überspringen.
- Geben Sie an, wo der Patch sich befindet:
- Datei - Der Patch befindet sich in einer Datei im lokalen Dateisystem. Geben Sie den
vollständigen Pfad zur Datei ein, oder verwenden Sie die Schaltfläche Durchsuchen..., um die Datei
zu suchen.
- Zwischenablage - Der Patch befindet sich in der Zwischenablage. Warnung: Es ist sicherer, einen Patch aus einer Datei zu verwenden. Es kann sein, dass
Zeilenabschlüsse nicht korrekt gehandhabt werden,
wenn die Zwischenablage verwendet wird und der Patch auf einer anderen Plattform generiert wurde (z. B. Linux
gegenüber Windows).
- URL - Das Patch befindet sich unter der angegebenen URL. Warnung:
Stellen Sie sicher, dass die von Ihnen eingegebene URL gültig ist und ein ordnungsgemäßes Patch enthält.
Andernfalls kann das Patch nicht angewandt werden. Außerdem ist zu bedenken, dass die Anwendung eines Patchs direkt über eine URL eine gewisse Zeit in
Anspruch nehmen kann.
- Arbeitsbereich: Der Patch wurde in einer Position im Arbeitsbereich gespeichert.
Klicken Sie auf Weiter, um das Ergebnis der Anwendung des Patches anzuzeigen.
-
Optionaler Schritt: Dieser Schritt ist nur dann möglich, wenn das Stammverzeichnis des Patchs die Projekt- oder die Auswahlebene ist.
Bei Patches mit dem Arbeitsbereich als Stammverzeichnis wird automatisch mit der Vorschauseite für das Patch fortgefahren.
Auf der Seite "Patchzielspezifikation" sollten Sie die Ressource auswählen, die als Stammverzeichnis des Patches verwendet werden soll.
- Auf der Vorschauseite für den Patch wird angezeigt, ob der Patch erfolgreich auf Dateien Ihres Arbeitsbereichs anwendet werden konnte. Das obere Teilfenster enthält eine Liste der im Patch enthaltenen Änderungen.
Es gibt im oberen Teilfenster zwei Typen von Einträgen: Dateiänderungen
und Patchsegmente ohne Entsprechung (in der Patchterminologie auch als 'Hunk'
bezeichnet).
- Wenn mindestens ein Patchsegment automatisch auf die Datei angewendet
werden kann, wird die Datei mit einem Anzeiger für eingehende Änderung
angezeigt. Sie können die Änderung untersuchen, indem Sie doppelt auf die
Datei klicken.
- Wenn mehrere "Hunks" (Stücke) nicht automatisch angewendet werden
können, werden die Hunkeinträge als untergeordnete Elemente der Datei
im oberen Teilfenster angezeigt, und rotes Ausrufezeichen zeigt an, dass bei einem Patch oder
einem "Hunk" ein Problem aufgetreten ist.
Sie können den "Hunk" untersuchen, indem Sie doppelt darauf klicken. Anschließend
können Sie den Hunk manuell aus dem rechten Teilfenster in der Datei auf
der linken Seite anwenden. Wenn Sie im linken Teilfenster speichern,
aktualisieren Sie den Eintrag in der übergeordneten Datei im oberen
Teilfenster, ändern jedoch nicht die Datei auf dem Datenträger. Die
Datei auf dem Datenträger wird nur geändert, wenn Sie auf "Fertig stellen"
klicken.
Damit der vollständige Patch angewendet wird, müssen Sie die
Fehler (rote Ausrufezeichen) beseitigen. Dazu können Sie entweder die
Patchsegmente manuell anwenden, indem Sie das Patchsegment im Kontextmenü durch Auswahl
von Entfernen aus der Operation
ausschließen oder indem Sie die Optionen auf dieser Assistentenseite
optimieren (siehe unten unter 'Optionen für Anwendung eines Patches').
- Wenn Sie alle Schritte ausgeführt haben, klicken Sie auf Fertig stellen, um den Patch anzulegen. Der Arbeitsbereich enthält nun ausgehende Änderungen für jede Datei, die durch den Patch modifiziert wurde.
Patchs können mittels Synchronisation mit lokalem Inhalt angewandt werden.
Um eine Synchronisation mit einem Patch durchzuführen, gehen Sie wie folgt vor:
-
In der Perspektive 'Teamsynchronisierung' wählen Sie die Aktion Synchronisieren... aus der Dropdown-Liste 'Synchronisieren'
aus.
-
Wählen Sie Mit Patch synchronisieren aus der Liste der möglichen Synchronisierungstypen aus und klicken dann auf Weiter.
- Geben Sie an, wo der Patch sich befindet:
- Datei - Der Patch befindet sich in einer Datei im lokalen Dateisystem. Geben Sie den
vollständigen Pfad zur Datei ein, oder verwenden Sie die Schaltfläche Durchsuchen..., um die Datei
zu suchen.
- Zwischenablage - Der Patch befindet sich in der Zwischenablage. Warnung: Es ist sicherer, einen Patch aus einer Datei zu verwenden. Es kann sein, dass
Zeilenabschlüsse nicht korrekt gehandhabt werden,
wenn die Zwischenablage verwendet wird und der Patch auf einer anderen Plattform generiert wurde (z. B. Linux
gegenüber Windows).
- URL - Das Patch befindet sich unter der angegebenen URL. Warnung:
Stellen Sie sicher, dass die von Ihnen eingegebene URL gültig ist und ein ordnungsgemäßes Patch enthält.
Andernfalls kann das Patch nicht angewandt werden. Außerdem ist zu bedenken, dass die Anwendung eines Patchs direkt über eine URL eine gewisse Zeit in
Anspruch nehmen kann.
- Arbeitsbereich: Der Patch wurde in einer Position im Arbeitsbereich gespeichert.
Klicken Sie auf Weiter, um das Ergebnis der Anwendung des Patches anzuzeigen.
-
Optionaler Schritt: Dieser Schritt ist nur dann möglich, wenn das Stammverzeichnis des Patchs die Projekt- oder die Auswahlebene ist.
Bei Patches mit dem Arbeitsbereich als Stammverzeichnis wird automatisch mit der Vorschauseite für das Patch fortgefahren.
Auf der Seite "Patchzielspezifikation" sollten Sie die Ressource auswählen, die als Stammverzeichnis des Patches verwendet werden soll.
-
Optionaler Schritt:: Dieser Schritt ist nur dann möglich, wenn das Patch auf Projekte verweist, auf die kein Zugriff besteht. Wenn alle Projekte aus
dem Patch im Arbeitsbereich vorhanden und geöffnet sind, wird diese Seite übersprungen. Auf der Seite 'Projekte ohne Zugriff' können Sie alle
geschlossenen Projekte öffnen. Darüber hinaus werden Informationen zu nicht vorhandenen Projekten angezeigt.
Auf Projekte, die geschlossen sind oder im
Arbeitsbereich
nicht existieren, können keine Patchs angewandt werden.
-
Klicken Sie auf der letzten Seite auf Fertig stellen, um eine Vorschau der Patchänderungen in der Ansicht 'Synchronisieren' anzuzeigen.
Optionen für Anwendung eines Patches
Folgende Optionen helfen Ihnen dabei, erfolgreiche Übereinstimmungen für Ihre Patch-Datei zu finden:
-
Gehen Sie zurück zur ersten Seite des Assistenten "Patch anwenden" und wählen Sie die korrekte Ressource aus, auf die der Patch angewendet werden soll.
-
Wenn ein allgemeines Präfix der in der Patch-Datei gespeicherten
Pfadnamen nicht mit den Pfadnamen in Ihrem aktuellen Arbeitsbereich
übereinstimmt, können Sie die Option Führende Pfadnamensegmente
ignorieren auswählen.
-
Verwenden Sie die Schaltfläche Leerzeichen ignorieren, um
den Abgleichprozess von Leerzeichenunterschieden zwischen der Patch-Datei und
den Dateien in Ihrem Arbeitsbereich unabhängig zu machen.
-
Passen Sie den Wert Faktor für grobe Übereinstimmung
(in Patchterminologie: Fuzz-Faktor) an. Dieser Faktor gibt an, wie viele Kontextzeilen des Stücks ignoriert werden sollen.
Wenn der Wert für den Fuzz-Faktor null ist, müssen alle Zeilen übereinstimmen.
Wenn der Fuzz-Faktor größer als null ist, zum Beispiel 2, werden die beiden ersten Kontextzeilen vor dem Hunk (Stück) und die beiden letzten Zeilen nach dem Hunk ignoriert.
Klicken Sie auf Raten, um den Fuzz-Faktor zu berechnen, der eine Übereinstimmung der meisten Hunks möglich macht.
-
Verwenden Sie die Option Patch umkehren für Patch-Dateien, die in
Ihrem Arbeitsbereich bereits angelegt wurden. Diese Option ist außerdem beim Widerrufen und Wiederholen eines Patches nützlich.
-
Bei Arbeitsbereichspatches können Sie ein anderes Projekt im Arbeitsbereich auswählen, auf das die
Änderungen durch den Patch angewendet werden sollen. Wählen Sie dazu im oberen Teilfenster ein Projekt und im Kontextmenü die Option
Verschieben aus. Dies öffnet einen Dialog mit einer Liste aller verfügbaren Projekte im Arbeitsbereich. Wenn Sie ein Projekt auswählen und auf OK klicken, werden die Änderungen des Patches auf das ausgewählte Projekt anwendet.
-
Mit der Option Ausgeschlossene Elemente anzeigen können Sie die
"Hunks" anzeigen, die bereits ausgewählt wurden, damit sie nicht in den
Patch eingeschlossen werden.
-
Beim Synchronisieren mit einem Patch sind die vorstehenden Optionen im Pulldown-Menü der Ansicht 'Synchronisieren' verfügbar.
Sie können auch zwischen den verfügbaren Modellen umschalten, um zusätzliche Informationen zu den angewandten Änderungen abzurufen.

Programmierung im Team mit CVS

Ressourcen vergleichen
Mit dem Repository synchronisieren

Team
CVS