Po trzech miesiącach prac opublikowano wydanie rozproszonego systemu kontroli wersji Git 2.32. Git jest jednym z najpopularniejszych, niezawodnych i wydajnych systemów zarządzania wersjami, oferującym elastyczne narzędzia do nieliniowego rozwoju, oparte na rozgałęzianiu i łączeniu gałęzi. W celu zapewnienia integralności historii i odporności na zmiany 'wstecz', wykorzystuje się domyślne haszowanie całej poprzedniej historii w każdym commicie, co umożliwia również cyfrowe podpisywanie poszczególnych tagów i commitów przez deweloperów.
W porównaniu do poprzedniego wydania, do nowej wersji przyjęto 617 zmian, przygotowanych przez 100 deweloperów, z czego 35 uczestniczyło w rozwoju po raz pierwszy. Główne nowości to:
- Do polecenia „git commit” dodano opcję „—trailer [=]”, która pozwala uprościć dołączenie do commita własnych strukturalnych informacji (trailer) w formacie klucz/wartość, które następnie można przetwarzać poleceniem „interpret-trailers”.
- Zamiast mechanizmu GIT_CONFIG_NOSYSTEM, stosowanego do zapobiegania odczytowi z ogólnego pliku konfiguracyjnego systemu, zaproponowano użycie mechanizmu GIT_CONFIG_SYSTEM, który pozwala jawnie wskazać, z jakiego pliku należy ładować ogólne ustawienia, a także parametru GIT_CONFIG_GLOBAL, aby nadpisywać ustawienia przypisane do poszczególnych użytkowników w $HOME/.gitconfig. Przypisanie zmiennej GIT_CONFIG_SYSTEM pustej wartości zmienia działanie na równoważne GIT_CONFIG_NOSYSTEM.
- Przy korzystaniu z drugiej wersji protokołu komunikacyjnego Git podczas wykonania „git push” wprowadzono określenie wspólnego przodka po stronie odbierającej, co pozwoliło zwiększyć efektywność działania „git push” do poziomu „git fetch” i wyeliminować pobieranie obiektów, które nie są potrzebne.
- Dodano prosty interfejs IPC, umożliwiający tworzenie usług, takich jak fsmonitor.
- Zakończono przetwarzanie plików „.gitattributes”, „.gitignore” i „.mailmap”, jeśli są one dowiązaniami symbolicznymi.
- Dla transportu HTTP dodano wsparcie dla pamięci podręcznej hasła, pomyślnie używanego do odblokowania certyfikatu.
- W zespole „git stash show” wprowadzono możliwość wyświetlania nieśledzonej części schowka tymczasowo usuniętych plików.
- Zaproponowano bardziej zaawansowaną strategię reorganizacji repozytorium przez zespół „git repack”, która pozwala na obniżenie zużycia zasobów podczas reorganizacji.
- W zespole „git commit” wprowadzono rozszerzoną wersję opcji „—fixup” (tworzenie commita dla „rebase —autosquash”) — „—fixup=(reword|amend):”, dającą wybór: zmieniać tylko wiadomość w logu lub zarówno wiadomość, jak i zawartość.
- W zespole „git send-email” uwzględniono ustawienie opcji core.hooksPath.
- W „git format-patch -v” zezwolono na użycie liczników, które nie są liczbami całkowitymi.
- W „git clone” dodano opcję „—reject-shallow”, która pozwala zakazać klonowania z repozytoriów w trybie shallow (bez pełnej historii zmian).
- W programie „gitweb” dodano tryb ukrywania emaila, który zastępuje podobne do emaila ciągi tekstowe przy wyjściu.
- Zmieniono logikę przetwarzania polecenia „git apply —3way”, które teraz najpierw próbuje zastosować algorytm trójdrogowego scalania, a dopiero w przypadku niepowodzenia lub wystąpienia konfliktu cofa się do zwykłego zastosowania łaty (wcześniej było odwrotnie).
- W zespole „git apply” zezwolono na jednoczesne podawanie opcji „—3way” i „—cached”.
- W Userdiff dodano szablony dla języka „Scheme”.
- Do zespołu „git log” dodano opcję „—diff-merges=” oraz ustawienie log.diffMerges do wyboru domyślnego trybu.
- Do zespołów „git add” i „git rm” dodano dodatkową ochronę przed zmianą danych w ścieżkach, które znajdują się poza zakresem operacji częściowego klonowania (sparse checkout).
- W zespole „git rev-list” dodano opcję „—filter=object:type=” do wykluczania określonego typu obiektów z pakietu generowanego przez polecenie pack-objects.
- W „git pack-objects” zabroniono podawania wartości ujemnych w opcjach, które przyjmują wartości numeryczne, takich jak „—window” i „—depth”.
Źródło: opennet.ru
