Wprowadzono wydanie rozproszonego systemu zarządzania kodem źródłowym Git 2.53. Git wyróżnia się wysoką wydajnością i zapewnia narzędzia do nieliniowego rozwoju bazujące na odgałęziach i łączeniu gałęzi. W celu zapewnienia integralności historii oraz odporności na zmiany „wsteczne” stosuje się niejawne haszowanie całej wcześniejszej historii w każdym commicie, a także weryfikację cyfrowymi podpisami programistów poszczególnych tagów i commitów. Kod Git jest rozpowszechniany na licencji GPLv2+.
W porównaniu do poprzedniego wydania w nowej wersji wprowadzono 466 zmian, przygotowanych przy udziale 70 programistów (21 z nich po raz pierwszy zaangażowało się w rozwój Git). Główne nowości:
- Dodano możliwość zastosowania strategii pakowania repozytoriów „geometric” („git repack —geometric”) do częściowo sklonowanych zewnętrznych repozytoriów działających w trybie „promisor” (brakujące obiekty są pobierane w razie potrzeby). Podczas ponownego pakowania z opcjami „—geometric” pliki pack o rozszerzeniu „.promisor” są przetwarzane i pakowane osobno. Strategia „geometric” umożliwia skrócenie czasu konserwacji dużych monorepo, dzięki selektywnemu ponownemu pakowaniu obiektów i eliminacji zbędnych operacji zasobochłonnych, takich jak łączenie wszystkich plików pack (zachowując geometryczny postęp wielkości plików pack, w którym każdy kolejny plik pack musi być co najmniej dwa razy większy od poprzedniego).
- Do polecenia „git fast-import” dodano opcję „—signed-commits=strip-if-invalid” do usuwania podpisów cyfrowych z importowanych obiektów, które stały się niepoprawne po przepisaniu części historii repozytorium. Wcześniej można było albo importować, albo usunąć wszystkie podpisy, bez rozdzielania na ważne i utracone sens. Opcja „strip-if-invalid” pozwala na realizację narzędzi do zachowania ważnych podpisów oraz ponownego podpisywania obiektów z utraconymi aktualności podpisami.
- Wynik polecenia „git repo structure” został wzbogacony o informacje o rozmiarze wszystkich osiągalnych obiektów (reachable) w repozytorium, sklasyfikowanych według ich typów. Informacje te są teraz wyświetlane w czytelnej formie, z jednostkami miary, i pokazują oddzielnie rozmiar rzeczywisty i zajmowany na dysku, co pozwala ocenić całkowity rozmiar repozytorium na dysku. $ git repo structure | Struktura repozytorium | Wartość | | ——————— | ———- | | * Referencje | | | * Liczba | 1,78 k | | * Gałęzie | 5 | | * Tagi | 1,03 k | | * Zdalne | 749 | | * Inne | 0 | | | | | * Osiągalne obiekty | | | * Liczba | 421,37 k | | * Commity | 88,03 k | | * Drzewa | 169,95 k | | * Bloby | 162,40 k | | * Tagi | 994 | | * Rozmiar skompresowany | 7,61 GiB | | * Commity | 60,95 MiB | | * Drzewa | 2,44 GiB | | * Bloby | 5,11 GiB | | * Tagi | 731,73 KiB | | * Rozmiar na dysku | 301,50 MiB | | * Commity | 33,57 MiB | | * Drzewa | 77,92 MiB | | * Bloby | 189,44 MiB | | * Tagi | 578,13 KiB |
- Do polecenia „git maintenance” dodano podkomendę „is-needed”, która wykonuje operacje konserwacyjne repozytoriów tylko wtedy, gdy jest to konieczne.
- W eksperymentalnym poleceniu „git replay” domyślnie zaimplementowano aktualizację odnośników w transakcji, zamiast pokazywać, dokąd powinny wskazywać odnośniki, bez ich aktualizacji.
- Do polecenia „git blame” dodano możliwość wyboru algorytmu oceny różnic za pomocą opcji „—diff-algorithm=”.
- Do polecenia „git repo info” dodano opcję „—all”.
- Wsparcie dla linków symbolicznych zostało przeniesione z Git-for-Windows na platformę Windows.
W skład ostatniej wersji dodano ostrzeżenie o włączeniu domyślnie budowy komponentów w języku Rust w Git 2.53. Niemniej jednak w rzeczywistości w wersji Git 2.53 dodano jedynie pojedyncze ulepszenia wsparcia dla Rust (możliwość budowy bez GNU sed), ale budowa z Rust przy użyciu Makefile pozostała domyślnie wyłączona (wymaga ustawienia flagi WITH_RUST), a przy użyciu Meson automatycznie aktywuje się w obecności kompilatora rustc. W wersji Git 3.0 planowane jest włączenie narzędzi Rust w skład obowiązkowych zależności budowlanych.
Źródło: opennet.ru
