Wie groß muss eine „große Datei“ sein, um von Git LFS zu profitieren?

Lesezeit: 5 Minuten

Benutzer-Avatar
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

Benutzer-Avatar
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


Benutzer-Avatar
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

1278750cookie-checkWie groß muss eine „große Datei“ sein, um von Git LFS zu profitieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy