Wie groß muss eine „große Datei“ sein, um von Git LFS zu profitieren?
Lesezeit: 5 Minuten
Donnerschmiede
Ich lese ungefähr Git-LFS und sehe immer wieder, dass es bei “großen Dateien” super funktioniert
Git Large File Storage (LFS) ersetzt große Dateien wie Hörproben, Videos[…]
Versionieren Sie große Dateien – sogar solche mit einer Größe von ein paar GB – mit Git.
Git Large File Storage (LFS) ist eine kostenlose Open-Source-Erweiterung, die große Dateien durch Textzeiger in Git ersetzt und den Inhalt dieser Dateien auf einem Remote-Server speichert.
Leider sehe ich nirgendwo, was eine “große Datei” eigentlich ist. Es ist klar, dass etwas, das mehrere Gigabyte einnimmt, eine große Datei ist, aber was ist mit etwas Kleinerem?
Profitiere ich von Git LFS mit “großen Dateien” ab 50 MB? 20 MB? 5 MB? 1MB? Weniger als 1 MB?
Wie groß muss eine „große Datei“ sein, um von Git LFS im Vergleich zu regulärem Git zu profitieren?
GitHub lehnt Commit mit Dateien > 100 MB ab. GitHub war zuerst da, und danach begannen alle Git-Hostings, dasselbe mit ähnlichen Einschränkungen zu tun. BitBucket, AFAIR begrenzt Dateien auf > 50 MB.
– promov
27. Februar 2018 um 22:56 Uhr
Jamenk
Es gibt keinen genauen Schwellenwert, um zu definieren, was eine große Datei ist. Dies ist Sache des Benutzers. Um zu sehen, ob Sie einige Dateien mit Git LFS speichern müssen, müssen Sie verstehen, wie Git funktioniert.
Der grundlegendste Unterschied zwischen Git und anderen Tools zur Quellcodeverwaltung (perforce, svn) besteht darin, dass Git bei jedem Commit einen vollständigen Snapshot des Repositorys speichert. Wenn Sie also über eine große Datei verfügen, enthält der Snapshot eine komprimierte Version dieser Datei (oder einen Zeiger auf den Dateiblob, wenn die Datei nicht geändert wurde). Der Repository-Snapshot wird als Diagramm unter gespeichert .git Mappe. Wenn die Datei also „groß“ ist, wächst die Größe des Repositorys schnell an.
Es gibt mehrere Kriterien, um zu bestimmen, ob eine Datei mit Git LFS gespeichert werden soll.
Die Größe der Datei. IMO, wenn eine Datei mehr als 10 MB groß ist, sollten Sie erwägen, sie in Git LFS zu speichern
Wie oft die Datei geändert wird. Eine große Datei (basierend auf der Intuition des Benutzers einer großen Datei), die sich sehr oft ändert, sollte mit Git LFS gespeichert werden
Der Typ der Datei. Eine Nicht-Textdatei, die nicht zusammengeführt werden kann, ist für die Git-LFS-Speicherung geeignet
Profitiere ich von Git LFS mit “großen Dateien” ab 50 MB? 20 MB? 5MB? 1MB? Weniger als 1 MB?
Je nachdem, wie oft sich die Datei ändert, können Sie in jeder genannten Größe profitieren. Stellen Sie sich den Fall vor, in dem Sie jedes Mal 100 Commits durchführen, um die Datei zu bearbeiten. Bei einer 20-MB-Datei, die beispielsweise auf 15 MB komprimiert werden kann, würde sich die Repository-Größe um etwa 1,5 GB erhöhen, wenn die Datei nicht mit Git LFS gespeichert wird.
In Anbetracht des kompletten Gegenteils der Nichtverwendung von LFS: Warum nicht alle Dateien in LFS speichern? Da Dateien in LFS lässt sich nicht ohne weiteres unterscheidenwas im Grunde genommen einen wichtigen Teil des Versionskontrollsystems bricht.
– Brecht Machiels
19. Januar 2021 um 16:02 Uhr
Bonje-Tanne
LFS ist ein Werkzeug zur Pflege von Projektressourcen. Angenommen, Sie haben ein Projekt, das hat *.psd Dateien, die im Front-End verwendet werden. Diese Dateien sind normalerweise groß und die Versionierung einer Datei entspricht nicht früheren Versionen (git speichert die Änderungshistorie für Textdateien in Commits, aber für Binärdateien konnte dieser Ansatz nicht verwendet werden. diff von zwei .cpp Dateien hat aber eine Bedeutung diff von zwei Rohfoto nicht.). Wenn Sie also Ressourcen in das Repository stellen, ist dies der Fall Größe und Klonen Zeit wird Wachstum unansehnlich sein. Außerdem wird die Wartung schwierig sein.
Wie kann dieses Problem überwunden werden? Zunächst einmal ist es eine gute Idee, die Datenbank mit großen Dateien von Codes auf der Serverseite zu trennen. Ein weiterer Grund ist, dass die Clients einen Teil davon abrufen dürfen, den sie derzeit auf ihrem lokalen Computer verwenden möchten (dh nicht alle vorherigen Dateien).
Was macht LFS? Es hasht seine nachverfolgten Dateien und speichert das Thema als Zeiger auf Originaldateien. Speichern Sie Originaldateien in einer separaten Datenbank auf der Serverseite. Lokale Repositorys haben alle Zeiger in ihrem Verlauf, aber wenn Sie einen bestimmten Commit auschecken, wird nur dessen Inhalt abgerufen. Die Größe des lokalen Repositorys und die Klonzeit werden auf diese Weise eindrucksvoll verringert.
PS: Die Methode zum Empfangen von Dateien in lfs unterscheidet sich von git. Also ich denken Es verwendet einige Techniken, um große Dateien aufzuteilen, sie in verschiedene parallele Verbindungen zu senden und sie zusammenzuführen … und solche Dinge, die seine Funktionalität verbessern können … Aber was wichtig ist, ist, dass es die Klon-/Pull-Zeit um Hunderte/ Tausend von klein Dateien.
Beachten Sie auch, dass git Probleme mit Dateien hat, die größer sind 4GB in Fenstern.
Dies beantwortet nicht meine Frage, welche Größe eine Datei haben muss, um von Git LFS zu profitieren. Es spricht von großen und kleinen Dateien, definiert aber nicht, was sie sind.
– Donnerschmiede
28. Februar 2018 um 14:24 Uhr
@Thunderforge Ja. Ich hoffte klar zu erklären, dass es keine gibt Größe Kriterien für die Verwendung von LFS. Es ist eher relativ zu seinem Typ (dh .bin, .psd, .tif außer reinem Text). Aktualisierungshäufigkeit großer Datei…
– Bonje-Tanne
28. Februar 2018 um 14:44 Uhr
@Thunderforge Es gibt keine Einschränkungsdefinition für große Datei weil es keinen einschränkenden Wert hat!
– Bonje-Tanne
28. Februar 2018 um 14:52 Uhr
„Aber was wichtig ist, ist, dass es die Klon-/Pull-Zeit um Hunderte/Tausende erhöhen kann klein Dateien.” Was ist dann eine “kleine Datei”? Wird es schneller sein, LFS mit einer 1-MB-Datei oder regulärem Git zu verwenden?
– Donnerschmiede
28. Februar 2018 um 15:35 Uhr
Da Dateien, die mit LFS verfolgt werden, außerhalb des eigentlichen Git-Repositorys gespeichert werden, müssen sie separat abgerufen werden, was einige Zeit in Anspruch nehmen wird. Sie können (oder müssen) selbst entschlüsseln, welche Dateien Sie direkt dem Repo hinzufügen und welche Sie mit LFS tracken. Dateien bis zu ein paar MB sind normalerweise in Ordnung. Wenn Sie 100 MB überschreiten (was übrigens die harte Grenze für Dateien ist, die in Git auf Github gespeichert sind), sollten Sie auf jeden Fall LFS verwenden. Dazwischen liegt es an Ihnen, auf Basis Ihrer Daten eine passende Entscheidung zu treffen.
– Holger Just
28. Februar 2018 um 15:56 Uhr
12787500cookie-checkWie groß muss eine „große Datei“ sein, um von Git LFS zu profitieren?yes
GitHub lehnt Commit mit Dateien > 100 MB ab. GitHub war zuerst da, und danach begannen alle Git-Hostings, dasselbe mit ähnlichen Einschränkungen zu tun. BitBucket, AFAIR begrenzt Dateien auf > 50 MB.
– promov
27. Februar 2018 um 22:56 Uhr