TL; DR: Warum sollte man anstelle von Subversion so etwas wie Apache Archiva oder Sonatype Nexus als Artefakt-Repository verwenden?
Das Build-System, das ich derzeit verwende, enthält viele Binärblobs (Bilder, Audiodateien, kompilierte Binärdateien usw.), sowohl als Eingabe als auch als Ausgabe für unsere Builds. Unser System zur Verwaltung dieser Daten ist sehr ad hoc. Einige werden zusammen mit unserem Code in unser Subversion-Repository eingecheckt, andere werden außerhalb einer formalen Versionskontrolle an anderer Stelle gespeichert.
Ich versuche, dies zu konsolidieren, damit wir etwas haben, das konsistenter und benutzerfreundlicher ist und das binäre Artefakte von Code trennt.
Google teilt mir mit, dass eine Auswahl von Artefakt-Repositorys verfügbar ist ( Archiva , Nexus , Artifactory ,…), aber ich sehe keinen Vorteil darin, diese gegenüber Subversion zu verwenden. Das kümmert sich für uns um die Binärdateien - für einige unserer Binärdateien bedeutet dies bereits, dass wir lediglich das Repository-Layout neu anordnen möchten, um sie vom Code zu trennen - und hat den bemerkenswerten Vorteil, dass wir bereits über Subversion-Server und Know-how verfügen.
So. Was ist der Vorteil eines dedizierten Artefakt-Verwaltungssystems gegenüber einem allgemeinen Versionskontroll-Tool wie Subversion?
quelle
Antworten:
Kurze Antwort: Im Allgemeinen benötigen Sie keinen Verlauf von binären Artefakten und Änderungen an diesen Artefakten, sondern nur bestimmte Versionen.
Längere Antwort: Jedes Mal, wenn Sie eine kleine Änderung an einer Binärdatei vornehmen, haben Versionskontrollsysteme keine Möglichkeit, ein Delta zu erstellen - einen Unterschied zwischen den beiden Dateien -, sodass eine vollständig neue Kopie erstellt wird.
In einem CVCS wie SVN ist das kein großer Aufwand, da Sie nur eine zentrale Kopie Ihres Repositorys haben - Ihre lokale Kopie ist nur eine Version. (Obwohl Ihr Repository selbst dann sehr groß werden kann, was das Einchecken verlangsamt.) Aber was passiert, wenn Sie später zu einem DVCS wechseln, bei dem jede Kopie eines Repositorys den vollständigen Verlauf jeder Datei enthält? Die Größe der Änderungen wird dort sehr relevant.
Und was gibt es dir als Gegenleistung für den Schmerz? Das Einzige, was es bietet, ist, dass Sie zu einer früheren Version Ihres Repository zurückkehren können und wissen, dass Sie die richtigen Binärdateien für diese Version haben.
Aber brauchen Sie die gesamte Binärdatei in Ihrem Repository, um das zu tun? Oder können Sie einfach mit einer Textdatei davonkommen und dem Erstellungsprozess mitteilen, welche Versionen aus einem anderen Repository an einer anderen Stelle abgerufen werden sollen?
Letzteres wird von Artefakt-Repositories im Allgemeinen angeboten.
Darüber hinaus erhalten Sie von einigen professionelleren Anbietern wie Nexus Informationen zur Lizenzierung von Artefakten von Drittanbietern, sodass Sie nicht riskieren, eine subtile Klausel in einer Ihrer Meinung nach FOSS-Bibliothek zu verletzen.
quelle
Wir verwenden SVN als Repository für Release-Builds und es funktioniert sehr gut. Wir haben in einem Release-Repository mehr als 30 GB an verschiedenen Release-Builds und es führt gute Pulling-Builds für die Bereitstellung aus.
Einige der Vorteile dabei sind ..
quelle