6 Stimmen

Git-Sicherung von Binärdateien

Ich bin gerade dabei, das GIT-Versionskontrollsystem in 3ds max zu integrieren, um die Versionierung von .max-Dateien zu kontrollieren.

Ich habe Git mehrere Wochen lang mit maximalen Dateien getestet und festgestellt, dass es für meine Bedürfnisse geeignet ist, aber trotzdem ist Git für diese Art von Aufgaben ein wenig zu kompliziert. Was ich suche, ist das Programm, das genauso funktioniert wie (na ja, fast) Git, aber:

  1. ist natürlich ein geborenes Windows-Programm - git scheiterte mehrmals auf meiner Netzwerkfreigabe Ordner und zerstörte meine binären max-Dateien. Dies ist das Hauptproblem, und ich weiß nicht, wie es zu lösen.
  2. verarbeitet den Dateiinhalt nicht (und versucht es auch gar nicht). Ich denke, das beschleunigt den Arbeitsablauf.
  3. hat eine ähnliche Schnittstelle wie TortoiseGIT.

Was diese Software haben muss, ist:

  1. Commit- und Log-Befehle
  2. Verzweigungsunterstützung
  3. verteilt und nicht serverorientiert wie Perforce sein.

Ich habe Mercurial getestet, aber es ist bei großen Binärdateien sehr langsam. Wenn jemand weiß, wie man es beschleunigen kann (durch Deaktivieren der Inhaltsverwaltung, nehme ich an) und TortoiseHg voll funktionsfähig macht, wäre ich für jede Information dankbar.

Ich danke Ihnen!

10voto

VonC Punkte 1117238

Binärdateien haben eine Art ambivalente Beziehung zu VCS, weil:

  • sie sich nicht zusammenführen lassen (deshalb ist die gesamte "Branchenunterstützung" nicht besonders interessant)
  • sie sich nicht sehr gut differenzieren lassen (was bedeutet, dass die Speicherung ihrer Historie nicht sehr kompakt ist)
  • sie normalerweise generiert werden können
  • oder sie aus anderen Repository-Arten abgerufen werden können

Binärdateien sind Teil der Git-Grenzen, da sie dazu neigen, den gesamten Arbeitsablauf zu verlangsamen, und nicht in der Größe skalieren (das Repository wird schnell zu groß, um effizient verwaltet/gesichert zu werden).

Die Frage lautet also: Könnten Sie diese Dateien in einem anderen Repo als einem VCS speichern?
Vielleicht ein Maven Repo (verwaltet von einem Repo-Manager wie Nexus, nicht genau verteilt, aber dazu gemacht, eine präzise Version von beliebigen Dateisätzen zu referenzieren).


Jakub Narebski (aktueller Git-Mitarbeiter) weist zu Recht auf ein Git-Fork-Projekt hin, das in der Lage ist, effizienter mit großen Dateien umzugehen.

[git-bigfiles alt text (ok, das Projektlogo ist genial ;) )

Die Frage bleibt: Ist ein VCS das richtige Werkzeug zur Verwaltung solch großer Objekte?
Denn meiner Erfahrung nach wird die Frage der "Bereinigung der Historie" früher oder später gestellt werden, aufgrund des kontinuierlich zunehmenden Festplattenplatzverbrauchs.
Und VCS sind grundsätzlich nicht dafür gemacht, ihre Historie aufzuräumen.
Git selbst kann dies nicht tun, ohne seinen SHA1-Schlüssel zu ändern, was jede zukünftige Veröffentlichung in anderen öffentlichen Repos problematisch macht.

0 Stimmen

Das Verzweigen ist sehr nützlich bei binären Dateien. Nicht für nachfolgendes Zusammenführen, sondern um die Versionen eines Projekts zu trennen und zwischen ihnen zu wechseln. Vielen Dank für den Hinweis auf Marven/Nexus. Ich werde mir die Nexus-Dokumentation anschauen.

2 Stimmen

Schauen Sie sich das git-bigfiles-Projekt an, wenn Sie eine Versionskontrolle für große binäre Dateien wünschen.

0 Stimmen

@Jakub: Vielen Dank. Ich habe meine Antwort aktualisiert, um diesen Verweis hinzuzufügen, habe aber auch meine Frage zur Relevanz der Verwendung eines VCS (verteilt oder nicht) zur Verwaltung großer Dateien abgeschlossen.

3voto

Christophe Muller Punkte 4280

Was ich nicht verstehe, ist, warum Sie ein DVCS verwenden möchten, ohne diff verwenden zu können und somit davon zu profitieren, wie es der erste Kommentar sagt.

Ich würde zwei mögliche Richtungen vorschlagen:

  • werfen Sie einen Blick auf archiva und/oder ivy (Java-Tools), die entwickelt wurden, um die Verteilung von Binärdateien, wie Jar-Dateien, an Entwickler zu verwalten, aber es könnte für Ihren Anwendungsfall zu sehr auf Java (oder sogar Entwicklung) ausgerichtet sein, oder

  • versuchen Sie Rsync und seine Backup-Möglichkeiten (Rsync kann beliebig viele Versionen speichern, anstatt die vorherige Kopie durch die neue zu ersetzen). Es scheint gut zu Ihren Bedürfnissen zu passen: funktioniert gut unter Windows, behandelt Binärdateien sowie Textdateien sehr gut, ist sehr bandbreiteneffizient (kann komprimieren) und behandelt Backups mit mehreren Versionen. Das Einzige, was Ihnen fehlen würde, wäre eine GUI, die idealerweise in Winexplorer integriert ist. Vielleicht gibt es welche, das weiß ich nicht..

Hoffe, es hilft.

Viele Grüße,
Christophe.

\= Backups sind für Feiglinge. Echte Männer laden ihre Daten auf eine FTP-Site hoch und lassen alle anderen sie spiegeln. --Linus Torvalds =

0 Stimmen

Was DVCS zur besseren Wahl macht, ist, dass der Benutzer nicht gezwungen ist, einen strengen Serverstandort zu verwenden, er/sie kann alle Dateien frei auf dem lokalen Rechner mit freigegebenem Ordner speichern. Andere Benutzer können auf diese freigegebenen Ordner zugreifen, das Repository klonen und mit der Arbeit am Projekt fortfahren. Unser Ansatz beinhaltet kein Zusammenführen, nur Verzweigungen (forking). Vielen Dank für die Vorschläge. Ich werde mir rsync ansehen müssen, möglicherweise ist es möglich, ein Skript zu erstellen, um die Aufgabe richtig auszuführen.

0 Stimmen

Der Hauptvorteil von (D)VCS gegenüber allen anderen Werkzeugen ist der Log-Befehl. Mit Hilfe dieses Befehls hat der Benutzer immer die Projekthistorie und das ist unbezahlbar - eine schöne Historie zu haben anstelle von Dutzenden von Dateien mit seltsamen Namen.

0 Stimmen

Ich verstehe. Tatsächlich wäre ein DVCS viel leistungsstärker, das stimmt. Aber es gibt auch Probleme wie Overhead, Umgang mit großen Dateien (es wurde nicht dafür gemacht), Bereinigen der Historie wie vorgeschlagen (wieder wurde es nicht dafür gemacht). Das Problem ist, dass Dateisysteme nicht leistungsstark genug für dich sind, aber ein DVCS wäre etwas zu leistungsstark (+ erfordert Arbeit): Was du brauchst, ist etwas dazwischen, ein Tool, das lokal Kopien von Dateien erstellen kann, mit Protokollen, und es ermöglicht, sie zu wählen und zu löschen, zu einem bestimmten Zeitpunkt.. Vielleicht ein neues Tool, das git Low-Level-Dateisystem-ähnliche Funktionen verwendet? Keine Ahnung..

2voto

lofidevops Punkte 13398

Sie möchten möglicherweise Veracity untersuchen, das mit diesem Anforderung im Sinn entworfen wurde. Der Windows-Installer enthält einen Tortoise-ähnlichen Client. (Ich weiß nicht, ob der Mac-Installer eine ähnliche Schnittstelle hat. Ich weiß, dass der Linux Installer derzeit keine solche Schnittstelle hat.)

Relevante Links:

1voto

IAmNoone Punkte 1001

Haben Sie in Betracht gezogen, Autodesk Vault zu verwenden? Es funktioniert gut mit 3dsmax (wir benutzen es schon seit vielen Jahren, sowohl für Inventor als auch für 3dsmax). http://www.autodesk.com/products/autodesk-vault-family/features

0 Stimmen

Ist Vault immer noch kostenlos? Ich glaube, du musst es jetzt kaufen. Außerdem fand ich es beleidigend zu benutzen, es sei denn, du bist im Bauwesen.

0 Stimmen

Und Vault ist zentralisiert wie Perforce (das letzte Mal, als ich nachgeschaut habe)

0 Stimmen

Sie können Serverdaten zwischen Tresorservern replizieren, wir tun dies zwischen Servern an verschiedenen Standorten weltweit, aber die kostenlose Version bietet dies nicht out of the box.

0voto

Lieven Keersmaekers Punkte 55277

Bezüglich des von git zerstörten binären Max-Dateien,
haben Sie core.autocrlf=false festgelegt?

GIT wäre ein ziemlich nutzloses Quellkontrollsystem, wenn es Quellen zerstören würde.
Diese Frage auf unserem eigenen SO geht tiefer auf die Behandlung von Unterschieden bezüglich CR & LF in GIT ein.

0 Stimmen

Nein, das habe ich nicht. Der Fehler ist zwei- oder dreimal aufgetreten, jedes Mal auf einem freigegebenen Ordner, und ich konnte ihn nicht reproduzieren. Unser Unternehmen beschäftigt hauptsächlich Künstler, daher sollte ich voll und ganz von einer Software überzeugt sein, um die Leute zur Nutzung zu ermutigen. Wenn ein solcher Fehler bei einer Datei auftritt, wäre das eine Katastrophe. Um ehrlich zu sein - ich habe ein wenig Angst vor Git. Deshalb suche ich nach Alternativen.

0 Stimmen

Ich lasse die Antwort stehen, weil Ihr Kommentar für andere von Wert sein könnte. Für alles andere ist VonC besser geeignet, um Ihnen bei dem zu helfen, was Sie brauchen (oder nicht brauchen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X