Git Wire Protocol Version 2 ermöglicht serverseitiges Filtern von Referenzen

Kurz vor Erscheinen der neuen Version der Versionsverwaltung Git haben die Macher das Git Wire Protocol auf Version 2 aktualisiert. Dabei haben sie eine der größten Performanceeinbußen des Protokolls in Angriff genommen.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen
Git Wire Protocol Version 2 ermöglicht serverseitiges Filtern von Referenzen

(Bild: jplenio, Pixabay)

Lesezeit: 1 Min.
Von
  • Björn Bohn

In einem Beitrag des Google Open Source Blog hat das Git-Team ein Update des Wire Protocol der Versionsverwaltung Git auf Version 2 angekündigt. In dem Protokoll, das bestimmt, wie Clones, Fetches und Pushes zwischen Client und Server kommuniziert werden, soll dabei eines der ineffizientesten Bestandteile entfernt worden sein – was den Weg für weitere Verbesserungen in der Zukunft ebnen soll.

Die Hauptmotivation für das neue Protokoll war es, serverseitiges Filtern von Referenzen (Branches und Tags) zu erlauben. In der vorherigen Version antworteten Server auf ein Fetch-Kommando mit einer internen Referenzausgabe, die alle Referenzen im Repository gelistet hat. Diese Liste wurde immer vollständig gesendet – selbst wenn der Nutzer nur einen einzelnen Branch aktualisiert hat. In der neuen Version soll das sogenannte Reference Advertisment wegfallen: außer wenn es ein Benutzer explizit anfordert.

Intern verwendet Google bereits Version 2 des Protokolls. Laut dem Git-Team soll sich die Performance bei No-Op Fetches eines einzelnen Branches bei Repositories mit 500.000 Referenzen um den Faktor drei verbessert haben. Außerdem sollen sich die Overhead-Bytes von Googlesource.com-Servern um das Achtfache reduziert haben.

Weitere Informationen zum neuen Protokoll finden sich in der Spezifikation. Das Projekt ist auf GitHub zu finden. Das Team geht davon aus, dass das neue Protokoll Teil von Version 2.18 von Git sein wird. (bbo)