Login
Newsletter
Werbung

Do, 24. Mai 2018, 15:55

Software::Entwicklung

Git erhält effizienteres Protokoll

Die freie verteilte Versionsverwaltung Git verfügte bei Netzwerkoperationen nicht gerade über das effizienteste Protokoll. Eine Neuimplementation von Google wird als Version 2 im kommenden Git 2.18 erscheinen und einige Operationen deutlich beschleunigen.

git-scm.com

Auch dreizehn Jahre nach der ursprünglichen Konzeption durch Linus Torvalds und nachdem sich Git längst zum mit Abstand meistgenutzten verteilten Versionsverwaltungssystem entwickelt hat, wird Git immer noch verbessert und erweitert. Dabei sind Anwender mit besonders großen Repositorien im Laufe der Zeit auf diverse Skalierungsprobleme gestoßen, die allerdings allmählich behoben werden. Sogar Microsoft, das nach eigenen Angaben das weltgrößte Git-Repositorium betreibt, beteiligte sich mit einer Reihe von Optimierungen.

Auch Google gehört zu den großen Git-Nutzern und stellt einige Entwickler für Git ab. Im Chromium-Repositorium erkannte Google eine Reihe von Schwächen des Git-Netzwerkprotokolls. Operationen wie das Holen von Updates von einem Server (fetch) benötigten unverhältnismäßig viel Zeit. Schuld daran war, dass Server nach dem alten Protokoll die initiale Fetch-Anfrage mit einer Liste aller Referenzen beantwortete, was alle Zweige und Tags des Repositoriums umfasst. Im Chrome-Repositorium gibt es über eine halbe Million davon, was in Dutzenden von Megabytes resultierte, die an den Client gesendet wurden, nur um dort meistens gleich wieder verworfen zu werden.

Version 2 des Protokolls führt daher eine Server-seitige Filterung ein, die nur die benötigten Daten sendet. Die weiteren Neuerungen sind eine einfachere Erweiterbarkeit für künftige Anforderungen und eine vereinfachte Handhabung des HTTP-Transports. Einzelheiten können der Spezifikation entnommen werden.

Die neue Protokollversion wird sehr wahrscheinlich in Git 2.18 einfließen. Wer sie jetzt bereits testen will, kann den Master-Zweig von Git verwenden, wo das Protokoll bereits eingebaut wurde. Benötigt wird dann noch ein Server, der das neue Protokoll versteht. Google hat es bei seinen Servern unter anderem bei googlesource.com bereits seit einiger Zeit im Einsatz.

Auch wenn Git das neue Protokoll versteht, bleibt es kompatibel mit Servern, die die neue Version noch nicht kennen. Das wurde dadurch möglich, dass spezielle Kennzeichnungen in die Protokolldaten eingefügt werden, die von aktualisierten Servern erkannt, von alten jedoch einfach ignoriert werden. Für die unterschiedlichen Transportmethoden - http, ssh und git - wurde das auf unterschiedliche Weise erreicht. Am schwierigsten war es dabei, eine gangbare Methode für den git-Transport zu finden. Doch das Problem konnte gelöst werden und das neue Protokoll, in Git durch version=2.0 gekennzeichnet, konnte jetzt von Google der Allgemeinheit präsentiert werden.

Werbung
Kommentare (Insgesamt: 24 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung