Verwenden von Subversion als Artefakt-Repository im Vergleich zu einem bestimmten Artefakt-Verwaltungstool


19

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?


Der weitaus größte Vorteil der Verwendung eines dedizierten Tools besteht darin, dass andere Tools wissen, wie sie damit umgehen ! Sie können Artefakte in diese Werkzeuge einfügen und sie automatisch wieder herausnehmen.
Joachim Sauer

Antworten:


13

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.


Ok, ich sollte es vermeiden, mein aktuelles Subversion-Repository als Artefakt-Repository zu verwenden, aber warum nicht ein neues Subversion-Repository einrichten? Das scheint die gleichen Vor- und Nachteile zu haben; Ein Artefakt-Repository hätte vermutlich die gleichen Probleme beim Speichern großer Binärdaten.
Ich_und

@me_and: Sie könnten das tun. Aber dann müssen Sie verwalten, welche Revision welche Version des Artefakts bereitstellt. Warum geben Sie sich diese zusätzliche Arbeit, wenn ein Artefakt-Repository es für Sie erledigt? Es ist, als würde man sagen: "Also könnte ich meinen Code mit Notepad schreiben? Warum sollte ich mich dann um Eclipse kümmern?" Außerdem werden Sie niemals in der Lage sein, alte Versionen wirklich zu entfernen, um Platz zu sparen. Sie können mit einem Artefakt-Repository.
pdr

1
Um die Antwort von @pdr hervorzuheben und zu erweitern, werden Sie wahrscheinlich auf Speicherprobleme stoßen, wenn Sie svn als binäres Artefakt-Repository verwenden, da svn so konzipiert ist, dass Daten niemals gelöscht werden. An einer Stelle, an der ich gearbeitet habe, haben wir svn für die Speicherung von Artefakten verwendet, und wir haben regelmäßig die Speichergrenzen überschritten, da es schwierig (nicht unmöglich, aber schwierig) war, alte, nicht verwendete Artefakte aus dem Geschäft zu entfernen. Mit nativen Tools für das binäre Repository wie Artifactory und Nexus können nicht benötigte Artefakte gelöscht werden.
Matthew Skelton

3
Korrektur: Subversion verwendet intern binäre Deltas (und nur diese AFAIK). Ich habe vor vielen Jahren Experimente mit dem Speichern von MS Office-Dateien durchgeführt und es war äußerst effektiv. Die Größe des Repositorys wuchs sehr langsam, auch wenn 200 PowerPoint-Folien stark neu gemischt wurden. Die Effektivität des binären Delta-Algorithmus variiert jedoch stark je nach Dateityp, und ich denke, dass die fehlende Aufbewahrungsrichtlinie das eigentliche Problem ist (etwas, das Sie mit einem gefilterten Dump / Load umgehen könnten, aber dann beginnen Sie, Ihre eigene Lösung zu schreiben).
Peter Becker

"Versionskontrollsysteme haben keine Möglichkeit, ein Delta zu erstellen" - das Problem ist, dass sie genau das tun - seit 2006 ... subversion.apache.org/docs/release-notes/1.4.html#svndiff1 de.wikipedia. org / wiki / Xdelta
RnR

1

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 ..

  • Zu SVN hinzugefügte Binärdateien werden aus Platzgründen um fast 60-70 Prozent komprimiert.
  • SVN dient als Bibliothek (Artifactory) für Releases und das Repository wird für Disaster Recovery-Zwecke gesichert.
  • SVN über https ermöglicht die sichere Übermittlung des Freigabecodes in eine DMZ.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.