Ein gemeinsames Unterprojekt einbinden

Manchmal möchten Sie ein anderes Projekt, vielleicht eine Bibliothek, in ihre Arbeitskopie einbinden. Es gibt mindestens vier Methoden, damit umzugehen.

Die Eigenschaft svn:externals

Setzen Sie die Eigenschaft svn:externals auf Ordner in Ihrem Projekt. Diese Eigenschaft besteht aus einer oder mehreren Zeilen. Jede Zeile besteht aus dem Namen eines Unterordners, den Sie als Ziel verwenden wollen, sowie der URL im Projektarchiv, die dorthin ausgecheckt werden soll. Weitere Informationen finden sich in „Externe Objekte“.

Übertragen Sie diese Änderungen. Nun, wenn Sie Ihre Arbeitskopie aktualisieren, wird Subversion eine Kopie des externen Projektes in Ihre Arbeitskopie einfügen. Jedes Mal, wenn Sie eine Aktualisierung vornehmen, wird automatisch auch das externe Projekt aktualisiert. Änderungen, die Sie am gemeinsamen Code vornehmen, werden ebenfalls in das externe Projektarchiv mit übertragen.

Wenn das externe Projekt im selben Projektarchiv befindet, werden alle Änderungen in diesem externen Projekt im Übertragen-Dialog aufgelistet und gemeinsam mit dem Hauptprojekt übertragen.

Wenn sich ein externes Projekt in einem anderen Projektarchiv befindet, werden Sie zwar über Änderungen im externen Projekt informiert, Sie müssen diese jedoch separat übertragen.

Von den drei beschriebenen Methoden ist dies die einzige, die keine clientseitige Konfiguration erfordert. Sobald Externals in den Ordnereigenschaften festgelegt wurden, werden sämtliche Clients die Ordner beim Aktualisieren erhalten.

Verschachtelte Arbeitskopien

Erstellen Sie einen neuen Ordner in Ihrem Projekt, der den gemeinsamen Code enthalten soll, aber fügen Sie diesen nicht zu Ihrer Arbeitskopie hinzu.

Wählen Sie TortoiseSVNAuschecken auf dem neuen Ordner und checken Sie eine Kopie des gemeinsamen Codes in diesen Ordner aus. Sie haben nun eine separate Arbeitskopie innerhalb Ihrer eigenen Arbeitskopie.

Diese beiden Arbeitskopien sind komplett unabhängig voneinander. Wenn Sie Änderungen übertragen möchten, so werden Änderungen in der zweiten Arbeitskopie nicht mit erfasst. Ebenfalls wird die zweite Arbeitskopie bei einer Aktualisierung nicht mit aktualisiert. Sie müssen die zweite Arbeitskopie jeweils getrennt aktualisieren oder Änderungen darin übertragen.

Relative Pfade

Wenn Sie denselben Code in mehreren Projekten benutzen und Sie nicht für jedes Projekt, das diesen gemeinsamen Code benutzt, eine Kopie davon haben möchten, dann können Sie diesen Code auch an eine ganz bestimmte Stelle auschecken, auf welche von allen Projekten, die den Code benutzen, zugegriffen werden kann. Zum Beispiel:

C:\Projekte\Proj1
C:\Projekte\Proj2
C:\Projekte\Proj3
C:\Projekte\Gemeinsamer_Code

dann können Sie in Ihren Projekten mittels relativer Pfade auf diesen Code zugreifen, zum Beispiel ..\..\Gemeinsamer_Code\DSPCore.

Wenn Ihre Projekte jedoch überall verstreut an verschiedenen Orten sind, dann können Sie eine Variante hiervon benutzen: den gemeinsamen Code an einem Ort speichern und diesen Ort dann mittels Laufwerks-Substitution an einen fixen Ort binden. Dann können Sie diesen fixen Pfad in Ihren Projekten direkt einbinden. Zum Beispiel können Sie den gemeinsamen Code an D:\Dokumente\Framework oder C:\Dokumente und Einstellungen\{login}\Eigene Dateien\Framework auschecken und dann mittels

SUBST X: "D:\Dokumente\Framework"

mit dem Laufwerksbuchstaben X verbinden. In Ihrem Sourcecode können Sie dann auf diese absolute Position zugreifen, zum Beispiel

#include "X:\superio.h\superio.h"

Diese Methode funktioniert jedoch nur in einer PC-Umgebung, und Sie müssen genau dokumentieren, wie die Laufwerks-Verbindung gemacht werden muss, damit die Team-Mitglieder die Projekte auch kompilieren können und die gemeinsamen Dateien auch finden. Diese Methode ist wirklich nur in geschlossene Umgebungen anwendbar und nicht für die normale Verwendung empfohlen.

Das Projekt zum Projektarchiv hinzufügen

Die wahrscheinlich einfachste Version ist, das Projekt in einem Unterordner zu Ihrer eigenen Arbeitskopie hinzuzufügen. Das hat jedoch den Nachteil, dass Sie das externe Projekt manuell aktualisieren müssen.

Um Sie dabei zu unterstützen, bietet TortoiseSVN einen Befehl im Rechtsziehen-Kontextmenü des Explorers an. Ziehen Sie den Ordner, in dem Sie die neue Version abgelegt haben, einfach mit der rechten Maustaste auf den Ordner in Ihrer Arbeitskopie und wählen Sie KontextmenüSVN Herstellerzweig hier. Damit werden die neuen Dateien in den Zielordner kopiert und Dateien, die sich nicht mehr in der neuen Version befinden, entfernt.