Wydanie systemu kontroli wersji Git 2.35

Po dwóch miesiącach prac rozwojowych opublikowano wersję rozproszonego systemu zarządzania kodem źródłowym Git 2.35. Git jest jednym z najpopularniejszych, niezawodnych i wysokowydajnych systemów kontroli wersji, oferującym elastyczne narzędzia do nieliniowego rozwoju, oparte na rozgałęzaniu i scalaniu gałęzi. Aby zapewnić integralność historii i odporność na zmiany "z dnia na dzień", wykorzystuje się niejawne haszowanie całej poprzedniej historii w każdym commitie, istnieje również możliwość weryfikacji tzw. ''cyfrowymi podpisami'' programistów dla poszczególnych tagów i commitów.

W porównaniu do poprzedniej wersji w nowej edycji wprowadzono 494 zmiany, przygotowane przez 93 programistów, z których 35 wzięło udział w projekcie po raz pierwszy. Główne nowości:

  • Rozszerzono możliwości korzystania z kluczy SSH do autoryzacji obiektów Git cyfrowym podpisem. Aby odróżnić czas ważności kilku kluczy, dodano wsparcie dla dyrektyw OpenSSH "valid-before" i "valid-after", dzięki którym można zapewnić prawidłowe działanie podpisów po rotacji klucza jednego z programistów. Wcześniej występował problem z rozdzieleniem podpisów starym i nowym kluczem — jeśli usunięto stary klucz, to nie można było zweryfikować podpisów z jego użyciem, a jeśli go pozostawiono — istniała możliwość tworzenia nowych podpisów starym kluczem, który został już zastąpiony innym kluczem. Dzięki valid-before i valid-after można podzielić zakres działania kluczy na podstawie czasu utworzenia podpisu.
  • W ustawieniu merge.conflictStyle, które pozwala wybrać sposób formatowania informacji o konfliktach podczas scalania, dodano wsparcie dla trybu "zdiff3", który umieszcza poza obszarem konfliktu wszystkie typowe linie określone na początku lub na końcu konfliktu, co pozwala na uzyskanie bardziej zwartej prezentacji informacji.
  • Do polecenia „git stash” dodano tryb „—staged”, który pozwala na ukrycie tylko zmian dodanych do indeksu, na przykład w sytuacjach, gdy konieczne jest tymczasowe odłożenie części złożonych zmian, aby najpierw dodać to, co już jest gotowe, a z pozostałymi zająć się później. Tryb przypomina polecenie „git commit”, które rejestruje tylko zmiany umieszczone w indeksie, ale zamiast tworzyć nowy commit, w „git stash —staged” wynik zapisywany jest w tymczasowym obszarze stash. Po tym, jak zmiany będą potrzebne, można je przywrócić poleceniem „git stash pop”.
  • Do polecenia „git log” dodano nowy specyfikator formatu „—format=%(describe)”, pozwalający połączyć wynik „git log” z wynikiem wykonania polecenia „git describe”. Parametry dla „git describe” podaje się bezpośrednio wewnątrz specyfikatora („—format=%(describe:match=,exclude=)”), w którym można również włączyć skrócone tagi („—format=%(describe:tags=)”) oraz dostosować liczbę szesnastkowych znaków do identyfikacji obiektów („—format=%(describe:abbrev=)”). Na przykład, aby wyświetlić 8 ostatnich commitów, których tagi nie mają etykiety kandydata na wydanie, oraz wskazać 8-znakowe identyfikatory, można użyć polecenia: $ git log -8 —format='%(describe:exclude=*-rc*,abbrev=13)’ v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb56bd95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • W konfiguracji user.signingKey wprowadzono wsparcie dla nowych typów kluczy, które nie ograniczają się do typu „ssh-” oraz podawania pełnej ścieżki do pliku klucza. Alternatywne typy są określane za pomocą prefiksu „key::”, na przykład „key::ecdsa-sha2-nistp256” dla kluczy ECDSA.
  • Znacząco zwiększono prędkość generowania listy zmian w trybie „—histogram”, a także podczas korzystania z opcji „—color-moved-ws”, która kontroluje podświetlanie spacji w kolorowym diffie.
  • W poleceniu „git jump”, używanym do przekazywania Vim informacji o dokładnych przejściach do poszukiwanej pozycji w pliku podczas rozwiązywania konfliktów łączenia, przeglądania różnic czy wykonywania operacji wyszukiwania, wprowadzono możliwość zawężania obejmowanych konfliktów łączenia. Na przykład, aby ograniczyć operacje tylko do katalogu „foo”, można wpisać „git jump merge — foo”, a aby wykluczyć z przetwarzania katalog „Documentation” — „git jump merge — ‘:^Documentation'”.
  • Przeprowadzono prace nad standaryzacją stosowania typu „size_t” zamiast „unsigned long” dla wartości reprezentujących rozmiar obiektów, co umożliwiło zastosowanie filtrów „clean” i „smudge” z plikami większymi niż 4 GB na wszystkich platformach, w tym platformach z modelem danych LLP64, w którym typ „unsigned long” jest ograniczony do 4 bajtów.
  • Do polecenia „git am” dodano opcję „—empty=(stop|drop|keep)”, która pozwala podczas przetwarzania łatek z skrzynki pocztowej wybrać zachowanie dla pustych wiadomości, które nie zawierają łatek. Wartość „stop” spowoduje zakończenie całej operacji stosowania łatek, „drop” — pominie pustą łatkę, „keep” — utworzy pusty commit.
  • Do poleceń „git reset”, „git diff”, „git blame”, „git fetch”, „git pull” i „git ls-files” dodano wsparcie dla częściowych indeksów (sparse index), co pozwala na zwiększenie wydajności i zaoszczędzenie miejsca w repozytoriach, w których wykonuje się operacje częściowego klonowania (sparse-checkout).
  • Ogłoszono, że polecenie „git sparse-checkout init” jest przestarzałe, zamiast niego należy używać „git sparse-checkout set”.
  • Dodano wstępną implementację nowego backendu „reftable” do przechowywania odniesień, takich jak gałęzie i tagi, w repozytorium. Nowy backend wykorzystuje pamięć blokową stosowaną przez projekt JGit i jest zoptymalizowany do przechowywania bardzo dużej liczby odniesień. Backend nie jest jeszcze zintegrowany z systemem odniesień (refs) i nie jest gotowy do praktycznego zastosowania.
  • Paleta kolorów polecenia „git grep” została dostosowana do narzędzia GNU grep.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster