Symbolischer Link im Subversion-Repository?

8

Ich entwickle eine kleine App in PHP und Java. Es hat ein paar Bilder, CSS und JS, die in beiden geteilt werden müssen.

Ich möchte nicht, dass diese Dateien dupliziert werden, JS und CSS müssen in beiden gleich sein. So würde ich das mögen, wenn ich es an einer Stelle ändere, wird die Änderung in der anderen repliziert.

In Unix haben wir symbolische Links, so dass dieselbe Datei / Ordner an mehreren Stellen im Dateisystem "sein" kann. In Subversion haben wir svn copy , aber sobald es ausgeführt wird, werden beide Kopien unabhängig. Ich wollte sie zusammenhalten, ein Commit in einer Kopie wird auch im "Anderen" angewendet.

Irgendeine Idee, wie man das macht?

    
Hikari 02.04.2013, 19:40
quelle

2 Antworten

15

Sie beziehen sich auf Symlinks in Ihrem Beitrag, nicht auf "Schattenlinks" (ich habe den Beitrag bearbeitet) . Subversion kann Symlinks für die Version bereitstellen, aber eine andere Möglichkeit, dies zu tun (da Symlinks derzeit von Subversion unter Windows nicht unterstützt werden), ist die Verwendung von Externals .

Der Unterschied besteht darin, dass Sie, wenn Sie eine externe Subversion verwenden, zwei Kopien der Datei auf Ihrem System haben (die auf die gleiche Stelle im Repository verweisen), während der Symlink eine einzelne Datei im Dateisystem ist .

    
alroc 02.04.2013, 20:53
quelle
3

Sie haben nicht erwähnt, wie die Projekte in svn angelegt sind oder wie Ihr Java-Zeug gebaut wird. Das wären gute Details, die hinzugefügt werden müssen.

Sie wollen in das Abhängigkeitsmanagement schauen - keine Symlinks. Wie @alroc darauf hinweist, wird dieses Feature der Subversion auf einigen Plattformen nicht funktionieren.

Sie wollen wirklich nicht svn:externals . Sie sind fast immer ein schlechter Deal, und die ganze Zeit, wenn das Externe zu etwas im selben Repo aufgelöst wird. Dies wurde ziemlich oft behandelt, Die akzeptierte Antwort hier ist ein guter Anfang .

Ich würde dir empfehlen, ein Repo für die Java-App, ein Repo für das PHP-Zeug und dann vielleicht ein Repo für das Common zu haben.

Ihr Build (Java) und Ihr Deploy (PHP) können dann die entsprechende Version des / der gängigen Repos-Artefakte aus einem Repository auflösen (ich empfehle Ihnen, in Nexus oder Artefakte zu schauen)

    
thekbb 02.04.2013 22:32
quelle

Tags und Links