SVN Externals sind eine praktische Sache. Man kann sich ein anderes Repository in das eigene „hineinziehen“. Wir nutzen dies, um eine gemeinsame Bibliothek über alle unsere Projekte zu teilen. Änderungen und neue Funktionen sind so mit einem einfachen Update in allen Projekten verfügbar.
Ein großes Problem bleibt: ändert sich die URL, z.B. statt http://
wird nun https://
eingesetzt, oder gleich die ganze Adresse funktioniert der Abruf nicht mehr. Man muss dann den Link aktualisieren, was problematisch ist, wenn das External bereits in vielen Tags und Branches verteilt ist.
Zum Glück bietet Subversion die Möglichkeit die URLs für das External relativ zu definieren. Man sollte also nach Möglichkeit die URL als relativen Pfad bzw. URL angeben, um Problemen vorzubeugen.
Folgende Möglichkeiten gibt es.
Relativ zum Verzeichnis
Die Angabe erfolgt relativ zum aktuellen Verzeichnis. Beispiel:
../../libs/liburl
Relativ zum Server
Die Angabe erfolgt relativ zum Server. Dies erspart die Angabe des Servers, „libs“ kann z.B. in einem extra Repository sein:
/libs/liburl
Relativ zum Repository
Ein ^am Anfang steht für den Root des aktuellen Repositorys. Dies kann verwendet werden, wenn das External im gleichen Repository ist.
^/libs/liburl
Relativ zum URL-Scheme
Beispiel:
//svn.server.org/repos/libs/liburl
Die erspart die Angabe des URL-Schemas, es wird das gleiche URL-Schema verwendet. Z.B. http:// oder https://. Diese Angabe fällt somit weg.
Bestehende Projekte umbiegen
Ist man einmal in die Falle getappt und hat Probleme mit dem Abruf, muss man die External Properties von Hand korrigieren. Leider ist mir derzeit kein Weg bekannt, wie man mal eben ein „Suchen und Ersetzen“ auf das gesamte Repository machen kann. Falls jemand etwas kennt, gerne Bescheid geben.