Sonntag, 27. Februar 2011

SVN Branch zurück in Trunk - Patch enthält keine neuen Dateien Workaround

Wenn man bei der Arbeit mit svn einen Branch aufgemacht hat und diesen in regelmäßigen Abständen mit dem Trunk synchron gehalten hat, dann kommt irgendwann die Zeit der Integration des Branches in den Trunk. Dazu benutzt man in Sublipse den Befehl Merge auf der Arbeitskopie aus dem Trunk. Die Arbeitskopie vom Trunk muss dabei mit der Versionsnummer des letzten Synchronisierungsvorgangscommits auf dem Branch ausgechecked worden sein. Als from Argument des Merge Befehls wählt man dabei den Pfad zum Trunk und als to Argument den Pfad zum Branch. Dabei muss man als gemeinsame Versionsnummer die Version des Branches angeben mit der auch die Arbeitskopie aus dem Trunk ausgechecked wurde. Nach dem der Merge Befehl fertig ist muss man eventuell vorhandenen Konflikte auflösen. Sobald dies geschehen ist sollte man eine Patch Datei auf dem Projekt erzeugen und diese dann den anderen Teilnehmern zuschicken um deren Begutachtung darüber einzuholen. Nun ist es aber leider so, dass in der aktuellen SVN Version 1.6.15 neue Dateien, welche im Branch erzeugt wurden nicht in der Patch Datei enthalten sind (Bug?). Als Workaraound für dieses Problem ergibt sich das folgende Vorgehn: Man führt auf dem Projekt den Befehl Revert für alle neuen Dateien aus. Damit werden diese aus der Arbeitskopie nicht gelöscht, sondern nur deren SVN-Information über ihre Herkunft aus dem Branch des Repositorys. Würde man nach diesem Schritt ein zweites mal ein Revert für diese Dateien ausführen, dann allerdings würden diese Dateien aus der Arbeitskopie gelöscht; das vermeiden wir allerdings tunlichst. Mit diesem einmaligen Aufruf des Revert Befehls auf den neuen Dateien ist es nun möglich den Patch Befehl auf dem Projekt aufzurufen und die neuen Dateien sind in dieser Patch Dateien enthalten. Diesen Workaround habe ich übrigens von diesem Posting erfahren: Link wird nachgereicht.