GitHub hat die Methode zur Erstellung automatisch generierter Archive im Format â.tar.gzâ und â.tgzâ auf den Release-Seiten geĂ€ndert, was zu VerĂ€nderungen der PrĂŒfziffern und massiven AusfĂ€llen in automatisierten Build-Systemen gefĂŒhrt hat, die zur Verifizierung der IntegritĂ€t die heruntergeladenen Archive von GitHub mit zuvor gespeicherten PrĂŒfziffern abgleichen, zum Beispiel die in den Metadaten von Paketen oder in Build-Skripten hinterlegt sind.
Seit dem Release 2.38 ist in das Git-Toolkit standardmĂ€Ăig eine integrierte Gzip-Implementierung aufgenommen worden, die eine einheitliche UnterstĂŒtzung dieser Komprimierungsmethode in verschiedenen Betriebssystemen ermöglicht und die Leistung bei der Erstellung von Archiven verbessert. GitHub hat die Ănderung nach dem Upgrade der Git-Version in seiner Infrastruktur aufgegriffen. Das Problem entstand, weil die komprimierten Archive, die von der integrierten Gzip-Implementierung auf Basis von zlib generiert wurden, binĂ€r von den Archiven abweichen, die mit dem Tool Gzip erstellt wurden, was zu unterschiedlichen PrĂŒfziffern fĂŒr Archive fĂŒhrt, die mit verschiedenen Git-Versionen beim AusfĂŒhren des Befehls âgit archiveâ erstellt wurden.
Nach dem Upgrade von Git auf GitHub wurden folglich auf den Release-Seiten etwas andere Archive bereitgestellt, die nicht mit den alten PrĂŒfziffern ĂŒbereinstimmten. Das Problem trat in verschiedenen Build-Systemen, Continuous Integration-Systemen und in den Werkzeugen zur Erstellung von Paketen aus Quelltexten auf. Beispielsweise wurde der Build von etwa 5800 FreeBSD-Paketen, deren Quelltexte von GitHub heruntergeladen wurden, beeintrĂ€chtigt.
Als Reaktion auf die ersten Beschwerden ĂŒber die aufgetretenen AusfĂ€lle verwiesen die Vertreter von GitHub zunĂ€chst darauf, dass feste PrĂŒfziffern fĂŒr Archive niemals garantiert worden seien. Nachdem jedoch aufgezeigt wurde, dass zur Wiederherstellung des Betriebs der von der Ănderung betroffenen Build-Systeme eine enorme Arbeit zur Aktualisierung der Metadaten in verschiedenen Ăkosystemen erforderlich sein wĂŒrde, Ă€nderten die Vertreter von GitHub ihre Meinung, hoben die Ănderung auf und stellten die alte Methode zur Erstellung von Archiven wieder her.
Die Git-Entwickler haben bisher keine Lösung gefunden und diskutieren lediglich mögliche Schritte. Es wurden Optionen wie ein Rollback zur Verwendung des gzip-Tools als Standard, die HinzufĂŒgung eines Flags «âstable», um die KompatibilitĂ€t mit alten Archiven zu gewĂ€hrleisten, die Bindung der integrierten Implementierung an ein bestimmtes Archivformat, die Verwendung des gzip-Tools fĂŒr alte Commits und der integrierten Implementierung fĂŒr Commits ab einem bestimmten Datum, sowie die GewĂ€hrleistung der StabilitĂ€t des Formats nur fĂŒr unkomprimierte Archive in Betracht gezogen.
Die Schwierigkeiten bei der Entscheidungsfindung ergeben sich daraus, dass ein Rollback zur Verwendung eines externen Tools das Problem der UnverĂ€nderlichkeit der PrĂŒfziffern nicht vollstĂ€ndig löst, da Ănderungen im externen Programm gzip ebenfalls zu Ănderungen im Archivformat fĂŒhren können. Derzeit liegt ein Satz von Patches zur ĂberprĂŒfung vor, der das alte Verhalten (Aufruf des externen gzip-Tools) als Standard wiederherstellt und die integrierte Implementierung verwendet, wenn das gzip-Tool nicht im System vorhanden ist. Die Patches fĂŒgen auĂerdem in die Dokumentation einen Hinweis ein, dass die StabilitĂ€t der Ausgabe von âgit archiveâ nicht garantiert werden kann und das Format in Zukunft geĂ€ndert werden könnte.
Quelle: opennet.ru
