Microsoft bringt Windows-Codebasis in ein 300-GByte-Git-Repository

Microsoft hat die Entwicklung von Windows 2017 weitgehend auf Git und das Git Virtual File System (GVFS) umgestellt. Im Microsoft-Entwicklerblog beschreibt Brian Harry eine Codebasis mit rund 3,5 Millionen Dateien und etwa 300 GByte Umfang.

Das Team umfasste rund 4.000 Ingenieure. Die Größe des Repositorys machte klassische Git-Arbeitsabläufe für die Windows-Entwicklung unpraktisch, weil viele Entwickler weder alle Dateien lokal vorhalten noch bei jedem Vorgang die vollständige Historie übertragen müssen.

GVFS lädt nur benötigte Dateien

GVFS virtualisiert den Zugriff auf die Arbeitskopie und die Git-Metadaten. Entwickler können dadurch mit einem großen Repository arbeiten, ohne beim Klonen und bei jedem lokalen Vorgang sämtliche Inhalte abzurufen. Microsoft veröffentlichte die Lösung als Open-Source-Projekt und baute sie für die Anforderungen der Windows-Codebasis aus.

Git muss mit großen Buildmengen umgehen

Die zentrale Windows-Codebasis enthält laut Microsoft auch Komponenten für Xbox, IoT, Mobile und HoloLens. Zum damaligen Entwicklungsbetrieb gehörten 1.760 Labor-Builds pro Tag in 440 Branches. Die Dokumentation zu Git im großen Maßstab nennt außerdem mehrere tausend tägliche Pushes und Pull Requests.

Bei der Arbeit mit dem Repository zählte deshalb nicht nur die Versionsverwaltung, sondern auch die gesamte Build- und Prüfautomatisierung. Das knüpfte an die Optimierung großer C++-Builds an. Für die Werkzeuge am Arbeitsplatz blieb parallel die Integration von Entwicklungsumgebungen relevant.

Verteilte Teams brauchen lokale Proxies

Microsoft setzte weltweit verteilte Git-Proxies ein, damit die Entwickler nicht für jeden Zugriff auf den zentralen Dienst über große Entfernungen arbeiten mussten. Ein Klonvorgang dauerte in einem Beispiel mit lokalem Proxy rund 70 Sekunden. Ohne diese Zwischenstation waren es aus North Carolina ungefähr 25 Minuten.

Die Umstellung war damit nicht nur ein Wechsel des Versionskontrollsystems. Git, Dateivirtualisierung, Proxy-Infrastruktur und Buildsysteme mussten gemeinsam auf eine Codebasis abgestimmt werden, die mehrere Plattformen und sehr viele tägliche Änderungen bündelte.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein