Git 2.29 i zmiany w mobilnej wersji GitHub
GitHub opublikował w tym tygodniu dwie ważne informacje. Pierwsza z nich dotyczy nowego wydania Git 2.29. Zawiera ono nowe funkcje i poprawki błędów od ponad 89 autorów. Drugą rzeczą są zmiany w GitHub na urządzenia mobilne. Te zmiany pozwalają z kolei na łatwe, szybkie i produktywniejsze przeglądanie kodu na smartfonach.
Git 2.29
Końcem lipca wydano Git 2.28. Tam nowością była opcja init.defaultBranch. Ponadto wprowadzono wiele poprawek wydajności, m.in. optymalizując rozszerzenie formatu commit-graph. Najnowsze wydanie zawiera przede wszystkim eksperymentalną obsługę SHA-256 oraz negatywne refspecs.
Algorytm SHA-256
Podczas dodawania plików do repozytorium, Git kopiuje zawartość do obiektów blob w lokalnej bazie danych. Następnie tworzy obiekty tree, odwołujące się do obiektów blob. Tak samo dzieje się podczas uruchamiania git commit, który tworzy commit odwołujący się do drzewa obrazującego stan zatwierdzeń. Git nadaje każdemu takiemu obiektowi identyfikator, na podstawie skrótu jego zawartości. Do tej pory korzystał z algorytmu SHA-1. Jednak, gdy dwa obiekty mają tę samą nazwę, następuje kolizja. Jest to mało prawdopodobne, ale korzystając z tej słabości, niektórzy wykorzystują je do ataków.
W ramach zapewnienia większego bezpieczeństwa wprowadzono nowy algorytm, bez znanych ataków – SHA-256.
$ git --version git version 2.29.0 $ git init --object-format=sha256 repo Initialized empty Git repository in /home/ttaylorr/repo/.git/ $ cd repo $ echo 'Hello, SHA-256!' >README.md $ git add README.md $ git commit -m "README.md: initial commit" [master (root-commit) 6e92961] README.md: initial commit 1 file changed, 1 insertion(+) create mode 100644 README.md $ git rev-parse HEAD 6e929619da9d82c78dd854dfe237c61cbad9e95148c1849b1f96ada5ee800810
Od wersji 2.29 Git może działać w trybie pełnego SHA-1 lub pełnego SHA-256. Na razie repozytoria korzystające z różnych formatów nie współpracują ze sobą. Jednak w przyszłych wydaniach współpraca między nimi może być możliwa, np. przez obliczanie wartości skrótu obu formatów każdego obiektu i przechowywanie między nimi tablicy translacji. Dzięki temu odwołania między starszymi commitami a nowymi będą mogły działać normalnie.
Refspecs w Git 2.29
Zawsze po uruchomieniu git fetch origin wszystkie gałęzie ze zdalnego repozytorium origin są pobierane do lokalnej hierarchii refs/remotes/origin/. Git wie, które gałęzie pobrać, ponieważ każdy plik konfiguracyjny zawiera refspecs. Do czasu nowego wydania z refspecs korzystało się do określenia wyboru referencji. Chcąc pobrać wszystkie gałęzie, z wyjątkiem jednej, należało wypisać je jako argumenty, jeden po drugim. Wyglądałoby to tak:
$ git ls-remote origin 'refs/heads/*' | grep -v ref-to-exclude | awk '{ print $2:$2 }' | xargs git fetch origin
Nowowprowadzona funkcja – negatywne refspecs znacznie ułatwia powyższy problem. Zaczynając refspecs od znaku ^, wskazuje się, które odniesienia mają być wykluczone.
$ git fetch origin 'refs/heads/*:refs/heads/*' ^refs/heads/ref-to-exclude
Sztuczki git shortlog
Funkcja git shortlog zachowuje się podobnie do git log. Jednak nie wyświetla ona commitów w sekwencji, tylko grupuje je według autora. Dotychczas git shortlog grupowało według autora zatwierdzenia (opcjonalnie – według tożsamości autora). Jednak nie pozwalało to na grupowe commity współautorów.
Git 2.29 zmienia to! Nowy argument –group określa sposób grupowania zatwierdzeń. Wcześniejsze zachowania otrzymuje się przez pobranie –group=author lub –group=committer. Jednak dodatkowo akceptuje także argument –group=trailer:<field>, dzięki którem można grupować commity ich współautorów.
Ponadto, korzystając z Reviewed-by i git shortlog programista może zobaczyć, kto recenzuje najwięcej poprawek.
GitHub na urządzenia mobilne
Ogólnodostępna wersja GitHub na urządzenia mobilne pojawiła się w kwietniu tego roku. Usprawniło to znacznie pracę programistów, odciągając ich od nieustannego siedzenia przed laptopem. Teraz programiści przeglądają kod podczas spaceru i są w stanie szybko reagować na wprowadzone zmiany. Najnowsza aktualizacja dodaje wiele funkcji, które znacznie ułatwią pracę programistów.
Przeglądanie kodu
Nowe wydanie zawiera przede wszystkim ulepszenia dotyczące przeglądania kodu. Czytanie kodu z zawiniętymi wierszami nie jest najwygodniejsze, dlatego twórcy dodali specjalny przełącznik.
Kolejną nowością zapewniającą większą kontrolę jest zmiana adresu powiązanego z mergowaniem oraz edytowanie opisu commitów. W interfejsie internetowym w zeszłym roku dodano obsługę komentarzy do wielu wierszy kodu. Dziś opcja jest dostępna także na mobilnych urządzeniach.
Podsumowanie Git 2.29 i mobilnej wersji
Szczegółowe informacje o najnowszym wydaniu Git 2.29 są dostępne na oficjalnym blogu GitHub. Platforma GitHub na urządzenia mobilne jest dostępna do pobrania w Google Play lub App Store dla indywidualnych planów, zespołów i Enterprise Cloud.