Frage

Gibt es ein verteiltes Versionskontrollsystem (git, Basar, Mercurial, darcs etc.), die Dateien, die größer als die verfügbaren RAM umgehen kann?

Ich muß in die Lage, große Binärdateien (dh Datensätze, Quellvideo / Bilder, Archive) zu begehen, aber ich brauche nicht in der Lage sein, sie zu diff, nur in der Lage sein, zu begehen und dann aktualisieren, wenn die Dateiänderungen .

Ich sah zuletzt auf diese vor etwa einem Jahr, und keiner von den offensichtlichen Kandidaten erlaubt dies, da sie für die Geschwindigkeit im Speicher alle entwickelt, um diff sind. Das ließ mich mit einem VCS für die Verwaltung von Code und etwas anderes ( „Asset Management“ Software oder einfach nur rsync und Skripte) für große Dateien, die ziemlich hässlich ist, wenn die Verzeichnisstrukturen der beiden überlappen.

War es hilfreich?

Lösung

Es ist schon 3 Jahre seit ich diese Frage gestellt, sondern, wie die Version 2.0 Mercurial umfasst die large Erweiterung , das erreicht, was ich ursprünglich suchte:

  

Die large Erweiterung ermöglicht es für die Verfolgung von großen, nicht komprimierbaren Binärdateien in Mercurial ohne übermäßige Bandbreite für Klone zu erfordern und zieht. Dateien hinzugefügt als large nicht direkt von Mercurial verfolgt werden; vielmehr sind ihre Revisionen durch eine Prüfsumme identifiziert und Mercurial verfolgt diese Prüfsummen. Auf diese Weise, wenn Sie einen Repository oder ziehen in Changeset zu klonen, die großen Dateien in älteren Versionen des Endlagers nicht benötigt werden, und nur das, die auf die aktuelle Version zu aktualisieren benötigt werden heruntergeladen. Das spart Speicherplatz und Bandbreite.

Andere Tipps

Kein freies verteiltes Versionskontrollsystem unterstützt dies. Wenn Sie diese Funktion wünschen, werden Sie es umsetzen müssen.

Sie können git abschreiben: sie in roher Leistung für den Kernel Fall Entwicklung Verwendung Linux interessiert sind. Es ist unwahrscheinlich, sie würden jemals die Leistung Kompromiss bei der Skalierung zu großen binären Dateien akzeptieren. Ich weiß nicht, über Mercurial, aber sie scheinen in Kopplung ihr Betriebsmodell, um ihre Speichermodell für die Leistung ähnliche Möglichkeiten wie git gemacht zu haben.

Im Prinzip sollte Bazaar der Lage sein, Ihren Anwendungsfall mit einem Plugin zu unterstützen, den Baum implementiert / branch / Repository-Formate, die auf Plattenspeicher und Implementierungsstrategie für Ihren Anwendungsfall optimiert. Falls die interne Architektur Blöcke Sie, und Sie nützlichen Code freigeben, erwarte ich, dass der Kern-Entwickler wird die interne Architektur helfen, zu beheben. Auch Sie können ein Feature Entwicklungsvertrag mit Canonical einzurichten.

Der wohl pragmatische Ansatz, und zwar unabhängig von dem spezifischen DVCS wäre ein Hybridsystem zu bauen: implementieren eine Riesen-Datei zu speichern, und speichern Sie Verweise auf Blobs in diesem Laden in die DVCS Ihrer Wahl

.

Vollständige Offenlegung: Ich bin ein ehemaliger Mitarbeiter von Canonical und arbeitete eng mit den Bazaar Entwickler

.

Ja, Plastic SCM . Es verteilt und verwaltet große Dateien in Blöcken von 4 MB, so dass es nicht darauf beschränkt ist, indem sie sich ganz auf mem jederzeit laden zu müssen. Finden Sie ein Tutorial über DVCS hier: http://codicesoftware.blogspot.com/2010/03/ verteilte-Entwicklung-for-windows.html

BUP könnte das sein, was Sie suchen. Es wurde dafür Sicherungen als eine Erweiterung der Funktionalität git gebaut, aber das ist effektiv das gleiche. Es bricht Dateien in Stücke und verwendet einen Roll Hash der Datei inhaltsadressierbaren / do effiziente Speicherung zu machen.

Ich denke, es ineffizient wäre, binäre Dateien in irgendeiner Form von Versionskontrollsystem zu speichern.

Die bessere Idee wäre, Meta-Daten Text-Dateien im Repository zu speichern, die die binären Objekte verweisen.

Hat es verteilt werden? Angeblich soll die eine große Vorteil Subversion hat auf den neueren, verteilte VCSes ist seine überlegene Fähigkeit, mit binären Dateien umgehen.

Ich kam zu dem Schluss, dass die beste Lösung in diesem Fall wäre die ZFS zu verwenden.

Ja ZFS ist kein DVCS aber:

  • Sie können Speicherplatz zuweisen für Repository über die Schaffung neuer FS
  • Sie können Änderungen verfolgen, indem Erstellen von Snapshots
  • Sie können Snapshots senden (verpflichtet) zu einem anderen ZFS-Datensatz
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top