Veröffentlichung des verteilten Quellcodesystems Git 2.24

Verfügbar Veröffentlichung des verteilten versionierten Systems Git 2.24.0. Git gehört zu den beliebtesten, zuverlässigen und leistungsstärksten Versionsverwaltungssystemen und bietet flexible Mittel für nicht-lineare Entwicklungen, die auf dem Branching und Merging von Zweigen basieren. Um die Integrität der Historie und die Widerstandsfähigkeit gegenüber nachträglichen Änderungen zu gewährleisten, werden alle vorherigen Historien in jedem Commit implizit gehasht, und es ist auch möglich, digitale Signaturen für bestimmte Tags und Commits der Entwickler zu verwenden.

Im Vergleich zur vorherigen Version wurden in die neue Version 544 Änderungen integriert, die von 78 Entwicklern vorbereitet wurden, darunter 21, die zum ersten Mal an der Entwicklung teilgenommen haben. Haupt Neuheiten:

  • Die Unterstützung für Konfigurationsmakros wurde hinzugefügt, mit denen Sie schnell zwischen verschiedenen Einstellungssätzen wechseln können, ohne sich mit den spezifischen Optionen, die damit verbunden sind, auseinandersetzen zu müssen. Mit Makros ist es nicht notwendig, sich daran zu erinnern, welche Einstellungen geändert werden müssen, um bestimmte Funktionen zu aktivieren. Beispielsweise kann es bei einer Verlangsamung der Arbeit mit einem großen Repository erforderlich sein, auf einen neuen Indizierungsmechanismus umzuschalten, die Komprimierung von Pfadpräfixen zu aktivieren und den Cache nicht verfolgter Dateien zu aktivieren, indem der Parameter index.version auf 4 gesetzt und core.untrackedCache aktiviert wird. Makros sparen Zeit bei der Suche nach der richtigen Lösung in der Dokumentation und ermöglichen es, sofort Einstellungen mit Optimierungen für Repositories mit vielen Dateien zu aktivieren:

    git config feature.manyFiles true

  • Standardmäßig ist die Speicherung von Objekten in Form eines Commit-Graphs (commit-graph) aktiviert, bei dem zur Indizierung nicht eine lineare Liste von Objekt-Hashes mit Referenzen auf andere Objekte, sondern eine Struktur in Form eines Graphen verwendet wird. Früher war es erforderlich, jedes Objekt von der Festplatte zu laden, um nach Referenzen zu suchen, wenn man herausfinden wollte, in welchen Releases ein bestimmter Fix enthalten ist. Bei der Speicherung in Form eines Commit-Graphs können alle notwendigen Verbindungen sofort bestimmt werden. Die Umstellung auf die Speicherung im Commit-Graphen in den Repositories des Linux-Kernels und von Git hat eine nahezu doppelte Leistungssteigerung bei Operationen mit Branches ermöglicht. Um die neue Speichermethode nach einem Upgrade auf Git 2.24 zu aktivieren, sollte der Befehl "git gc" ausgeführt werden.

    Änderungen im Zusammenhang mit dem Commit-Graph umfassen auch die Vereinheitlichung der Fortschrittsanzeige für Operationen in den mit dem Commit-Graph verbundenen Befehlen („git commit-graph write“, „git commit-graph verify“ usw.). Die Fortschrittsanzeige wird nun standardmäßig nur im Terminal ausgegeben (um das Verhalten zu ändern, sollte die Option „-[no-]progress“ verwendet werden). Darüber hinaus wurde ein neuer Konfigurationsparameter fetch.writeCommitGraph hinzugefügt, der eine automatische Aktualisierung der Datei mit dem Commit-Graph bei „git fetch“-Operationen umfasst (alle aus externen Repositories abgerufenen Commits werden sofort im Commit-Graph erfasst, ohne dass ein separater auto-gc-Vorgang erforderlich ist);

  • Ein Befehl zum Umschreiben der Änderungsverläufe wurde hinzugefügt — „git filter-repo„, der eine einfachere Alternative zum Befehl „git filter-branch» Für die Durchführung von Operationen mit der Änderungsverlaufshistorie im Repository (zum Beispiel das Entfernen einer Datei aus dem Repository oder das Ausziehen des Änderungsverlaufs eines bestimmten Verzeichnisses). Um die Effizienz zu steigern, werden anstelle einer geordneten commit-basierten Analyse in «git filter-repo» die Operationen auf der Historie in Form eines kontinuierlichen Streams durchgeführt.

    Die Filterung der Historie erfolgt mit der Option «-path-{glob,regex}», die es ermöglicht, sowohl einfache Platzhalter als auch reguläre Ausdrücke zu verwenden. Es gibt auch Optionen zur Durchführung von "Suchen und Ersetzen" oder zur Bereinigung binärer Objekte, deren Größe einen bestimmten Schwellenwert überschreitet. Jeder umgeschriebene Commit wird mit einer neuen SHA-1-Hash-ID versehen, und alle Verweise auf den ersetzten Commit werden entsprechend der neuen ID aktualisiert.

    Um eine Zusammenfassung der Repository-Statistiken anzuzeigen (Anzahl der Objekte nach Typen, größte Dateien und Verzeichnisse, welche Erweiterungen den meisten Speicherplatz beanspruchen usw.), gibt es die Option "-analyze". Zur Erweiterung der Funktionalität besteht die Möglichkeit, benutzerdefinierte Callback-Handler in Python zu integrieren, mit denen man sowohl neue Unterbefehle erstellen als auch verschiedene Ereignisse verarbeiten kann (z. B. neue Dateitypen);

  • Es wurde die Option "—end-of-options" hinzugefügt, um Optionen von Linknamen zu trennen, die mit dem Zeichen "-" beginnen und als Optionen wahrgenommen werden könnten (z. B. „git log —end-of-options —super-dangerous-option“). Während solche Namen im Alltag als „git log ‘refs/heads/—super-dangerous-option'“ maskiert werden können, könnten in Skripten Probleme bei der Bestimmung des Namensraums entstehen. Der übliche Trenner „—“ ist in diesem Fall nicht anwendbar, da er bereits verwendet wird, um Linknamen von Dateien zu trennen (z. B. „git log —end-of-options —super-dangerous-option ^master — path/to/file“);
  • In "git rebase —rebase-merges" wurden die Optionen "—strategy" und "—strategy-option" zur Auswahl der Zusammenführungsstrategie hinzugefügt;
  • Ein neuer Handler „.git/hooks/pre-merge-commit“ wurde hinzugefügt, der nach dem Abschluss eines Mergers, aber vor dem Schreiben des resultierenden Commits aufgerufen wird;
  • Die Engine zur automatischen Vervollständigung von Befehlen unterstützt jetzt das Vervollständigen von Konfigurationsvariablen in Abhängigkeit von den spezifischen Befehlsoptionen.
    Wenn Sie beispielsweise „git -c core.autocrlf=false add path/to/my/file“ eingeben müssen, sich aber nicht an den genauen Namen der Variablen „core.autocrlf“ erinnern, können Sie die Tabulatortaste drücken, um eine Eingabehilfe zu erhalten.

Darüber hinaus haben die Git-Entwickler wurde erweitert einen Verhaltenskodex für Projektmitglieder eingeführt, der die grundlegenden Prinzipien zur Beilegung von Konfliktsituationen definiert. Das Dokument basiert auf den Empfehlungen „Contributor Covenant«, die in vielen Open-Source-Projekten verwendet werden, einschließlich des Linux-Kernels, Eclipse, Freedesktop, GitLab, Ruby und Kubernetes. Das Dokument legt gleiche Chancen für alle Teilnehmer fest, unabhängig von ihrer Weltanschauung, ihrem Alter, Geschlecht, religiösen Überzeugungen, Bildungsniveau, sozialem Status und Nationalität. In der Community wird eine freundliche Kommunikationsform, Verständnis, Mitgefühl für die Probleme anderer Teilnehmer, die Aufnahme konstruktiver Kritik sowie die Annahme der besten Lösungen für die gesamte Gemeinschaft begrüßt. Trollerei, beleidigende Kommunikationsweisen, Versuche der Herabsetzung, Belästigungen, Verletzungen der Privatsphäre, die Offenlegung personenbezogener Daten sowie andere Handlungen, die im professionellen Austausch als unangemessen eingestuft werden können, sind nicht erlaubt.

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster