3 Punkte von xguru 2025-03-25 | Noch keine Kommentare. | Auf WhatsApp teilen
  • bundle-uri ist eine neue Git-Funktion, die zwischengespeicherte Dateien herunterlädt, um Projektdaten vorab bereitzustellen und danach den aufwendigen Fetch-Prozess mit dem Server zu reduzieren
  • Normalerweise lädt der Befehl git clone die benötigten Daten nach einem Aushandlungsprozess mit dem Server herunter → das kann ineffizient sein
  • bundle-uri holt die zwischengespeicherten Anfangsdaten von einem CDN und aktualisiert anschließend nur noch den neuesten Stand vom Server → kann Zeit sparen

Wird das Klonen schneller?

Ja? - Es kann schneller sein

  • Mit der lokalen Dateivariante wird das Klonen sehr schnell
  • Auf einem in einer VM eingehängten Dateisystem oder mit Bundle-Dateien aus einem Cloud-Cache kann die Synchronisierung schneller erfolgen

Nein? - Es kann langsamer sein

  • Dasselbe Datenmaterial über ein CDN zu beziehen klang schneller, war in der Praxis aber sogar langsamer
  • Versuchsergebnis: Ein Klon mit Bundle war langsamer als ein normaler Klon
    • Normaler Klon: 2 Minuten 36 Sekunden
    • Klon mit Bundle: 3 Minuten 20 Sekunden
  • Es trat das Problem auf, dass Objekte, die bereits über das Bundle geladen wurden, erneut heruntergeladen wurden

Vielleicht? - Das kann sein

  • Das Problem entstand, weil Git aus der Bundle-Datei nur refs/heads (Branch-Referenzen) liest
  • Die übrigen Referenzen werden ignoriert, weshalb zusätzliche Daten vom Server heruntergeladen werden
  • Wenn man den Git-Code so anpasst, dass alle Referenzen kopiert werden, verbessert sich die Klon-Geschwindigkeit
    • Klonzeit nach der Änderung: 2 Minuten 19 Sekunden (schneller als die bisherigen 2 Minuten 36 Sekunden)
    • Zusätzlich heruntergeladene Objekte: 43.877 (etwa 1 % des Gesamtbestands)

Änderungsmethode und Einspielen des Patches

  • Im Git-Code bundle-uri.c wurde der Teil geändert, der Referenzen außer refs/heads ignoriert
  • Nach der Änderung werden alle Referenzen kopiert → die Klon-Geschwindigkeit verbessert sich
  • Diese Änderung war ein minimaler Patch mit einer Änderung von 6 Zeichen

Sollte man diese Funktion verwenden?

Möglicherweise - Könnte vermutlich helfen

  • Auf Plattformen wie GitHub und GitLab hat das den großen Vorteil, die CPU-Last auf dem Server zu senken
    • Der Server muss Packfiles nicht direkt berechnen, da dies über das CDN erfolgen kann → spart Server-Ressourcen
  • Auch für einzelne Nutzer kann es in folgenden Fällen nützlich sein:
    • Wenn in einem internen Git-Server wiederholt große Klonvorgänge nötig sind
    • Wenn in CI/CD-Systemen wiederholt vollständige Klons erforderlich sind

Realistisch gesehen wird es wahrscheinlich erzwungen

  • Im aktuellen Git-Protokoll kann der Server dem Client eine Bundle-URL bereitstellen
  • Wenn der Server die URL einer Bundle-Datei bereitstellt, lädt der Client sie automatisch herunter und synchronisiert anschließend weiter
  • Wenn diese Funktion bei GitHub usw. aktiviert wird, haben Nutzer keine Wahlmöglichkeit

Fazit

  • Mit Bundle-Dateien kann das Klonen schneller werden, durch Gits Verarbeitungsweise kann es anfangs aber sogar langsamer sein
  • Wenn man den Git-Code anpasst und die Verarbeitung von Referenzen verbessert, steigt die Klon-Geschwindigkeit
  • Wenn GitHub, GitLab usw. diese Funktion künftig einführen, ist es sehr wahrscheinlich, dass sie auf Client-Seite automatisch verwendet wird

Noch keine Kommentare.

Noch keine Kommentare.