Veröffentlichung des Versionskontrollsystems Git 2.56

Die Veröffentlichung des verteilten Versionskontrollsystems Git 2.56 wurde vorgestellt. Der Git-Code wird unter der GPLv2+-Lizenz veröffentlicht. Im Vergleich zur vorherigen Version wurden 748 Änderungen in die neue Version aufgenommen, die von 104 Entwicklern vorgenommen wurden, von denen 39 erstmals an der Entwicklung von Git beteiligt sind. Die wichtigsten Neuerungen (1, 2, 3):

  • Der Modus „git add —resolved“ wurde hinzugefĂŒgt, um Konflikte bei Merges aufzulösen. Dieser ĂŒberprĂŒft Dateien auf Konfliktmarker und gibt im Fall eines Markers in einer Datei einen Fehler aus, indiziert keine der Dateien und zeigt eine Liste von Dateien an, die korrigiert werden mĂŒssen. Im Gegensatz zum Befehl „git add —update“ werden im neuen Modus nur die Dateien behandelt, die sich im Konfliktstatus befinden, wĂ€hrend unverknĂŒpfte geĂ€nderte Dateien ignoriert werden. Dies ermöglicht es, Merges sicher abzuschließen, selbst wenn im Arbeitsverzeichnis andere unvollendete Änderungen vorhanden sind (der Befehl „git add —update“ fĂŒgte alle vorher verfolgten geĂ€nderten Dateien im Arbeitsverzeichnis dem Index hinzu).
  • Die Arbeit mit großen Repositories wurde erheblich beschleunigt, dank der Optimierung des Algorithmus zur Suche nach den letzten gemeinsamen Commits wĂ€hrend Merges und beim Vergleichen von Commits. Bei der Verarbeitung werden nun auch Commits berĂŒcksichtigt, die ausschließlich einer der Branches gehören, was es ermöglicht, die Suche sofort zu stoppen, sobald alle möglichen gemeinsamen VorgĂ€nger gefunden sind, ohne Zeit mit einer weiteren Durchsuchung des Änderungsverlaufs zu verlieren. In einem der getesteten Repositories stieg die Suchgeschwindigkeit im Durchschnitt um das 20-Fache, in einem anderen erreichte die Beschleunigung das 70-Fache. Bei der AusfĂŒhrung des Befehls „git merge-base —all v4.8 v4.9“ reduzierte sich die Anzahl der Durchlauf-Schritte in einem Repository mit dem Linux-Kernel von 167.000 auf 3.800.
  • FĂŒr serverseitige Anwendungen wurde der Modus „—path-walk“ angepasst, der ermöglicht, kompaktere Pack-Dateien durch Gruppierung von Objekten nach ihrem Pfad im Verzeichnisbaum zu erstellen (zum Beispiel reduzierte beim Repository Fluent UI die Verwendung von „—path-walk“ die GrĂ¶ĂŸe der Pack-Datei von 558 MB auf 164 MB). In der neuen Version wurde die Möglichkeit implementiert, den Modus „—path-walk“ zusammen mit Erreichbarkeits-Bitmaps und Delta-Inseln zu verwenden, die von Git-Hosting-Diensten zur Beschleunigung der Arbeit und zur Isolation von Forks vom Hauptrepository eingesetzt werden.
  • Engpassprobleme, die zu ĂŒbermĂ€ĂŸigen Berechnungen in großen Repositories fĂŒhrten, wurden behoben: ÜberflĂŒssige StatusĂŒberprĂŒfungen von Dateien beim Schreiben in die Reftabelle wurden entfernt; das wiederholte Scannen der Liste bei jedem HinzufĂŒgen einer neuen Pack-Datei wurde ausgeschlossen; Operationen mit der Reftabelle, in denen viele LöschdatensĂ€tze angesammelt wurden, wurden beschleunigt; die Arbeit mit „git diff“ wurde optimiert, wenn EinschrĂ€nkungen bezĂŒglich der Dateipfade angegeben werden. Nach den Optimierungen hat sich die Arbeit mit der Reftabelle bei einer hohen Anzahl von Löschungen um das 65-fache beschleunigt (von 13 Sekunden auf 0,2 Sekunden), und die AusfĂŒhrung des problematischen Befehls „git diff“ im Chromium-Repository mit 500.000 Elementen im Index benötigt nun 0,07 Sekunden statt 8 Minuten.
  • Das experimentelle Team „git history“, das Möglichkeiten zur Neuaufzeichnung der Änderungsverlauf bietet, hat die Operation „git history drop“ hinzugefĂŒgt, um einen bestimmten Commit zu löschen und seine Nachfolger automatisch an den Eltern-Commit anzuhĂ€ngen.
  • Der Befehl „git branch —delete-merged ‘origin alf‘ ‘topic-*'“ wurde hinzugefĂŒgt, um sicher Gruppen lokaler Zweige zu löschen, deren Änderungen bereits an das externe Repository ĂŒbergeben wurden. Masken dĂŒrfen fĂŒr die Filterung von Zweigen und Repositories verwendet werden. Zum Analysieren der in Frage kommenden Elemente zur Löschung, ohne die Operation tatsĂ€chlich durchzufĂŒhren, kann das Flag „—dry-run“ verwendet werden.
  • Der Befehl „git refs create|update|delete|rename“ wurde hinzugefĂŒgt, um niedrigstufige Operationen zum Erstellen, Löschen, Umbenennen und Aktualisieren von Referenzen zu kombinieren.
  • Der Option „—reset-when-found=[]“ wurde zum Befehl „git bisect run“ hinzugefĂŒgt, die das Repository automatisch in den Zustand vor Beginn der Suche zurĂŒckfĂŒhrt oder den problematischen Commit aktiv bleibt, ohne den Befehl „git bisect reset“ separat ausfĂŒhren zu mĂŒssen.
  • Dem Befehl „git replay“ wurde die Option „—linearize“ hinzugefĂŒgt, um eine flache Merge-Topologie zu verwenden, analog zu „git rebase —no-rebase-merges“, jedoch ohne auf das Arbeitsverzeichnis zuzugreifen.
  • Im Befehl „git log —follow“ wurde die Verfolgung von Umbenennungen von Dateien in nichtlinearen ÄnderungsverlĂ€ufen implementiert, z. B. bei der ZusammenfĂŒhrung von Unterzweigen. Der Pfad zur Datei wird nun separat fĂŒr jeden ĂŒbergeordneten Commit festgehalten, was das Ergebnis unabhĂ€ngig von der Reihenfolge des Durchlaufs durch die Commit-Historie macht.
  • Die Möglichkeit, den Befehl „git repack -a —filter=blob:limit=1m —drop-filtered“ anzuwenden, wurde hinzugefĂŒgt, um große Blob-Objekte, die bei Bedarf aus einem externen Repository geladen werden und im aktuellen Index nicht verwendet werden, zu entfernen. Bei einem spĂ€teren Zugriff auf diese Objekte werden sie automatisch erneut geladen.
  • In dem Befehl „git log —graph“ wurde fĂŒr Graphen mit mehreren unabhĂ€ngigen Wurzeln die HinzufĂŒgung von EinrĂŒckungen zur klaren Trennung nicht verbundener Commits umgesetzt.
  • Die Erkennung typischer Tippfehler wurde sichergestellt, wie z.B. die Angabe von „git push origin/main“ anstelle von „git push origin main“ oder „git branch —set-upstream-to origin main“ anstelle von „git branch —set-upstream-to=origin/main“ sowie eine提ç€ș fĂŒr die Verwendung der korrekten Variante.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster