Po trzech miesiącach prac rozwojowych opublikowano wersję 2.40 rozproszonego systemu zarządzania kodem źródłowym Git. Git jest jednym z najpopularniejszych, niezawodnych i wydajnych systemów kontroli wersji, oferującym elastyczne narzędzia do nieliniowego rozwoju oparte na rozgałęzieniach i scalaniu. Aby zapewnić integralność historii i odporność na zmiany „wstecz”, stosuje się niejawne haszowanie całej wcześniejszej historii w każdym commicie; możliwe jest również potwierdzanie podpisami cyfrowymi deweloperów poszczególnych tagów i commitów.
W porównaniu do poprzedniej wersji, nowa wersja zawiera 472 zmiany, przygotowane przez 88 deweloperów, z czego 30 po raz pierwszy wzięło udział w rozwoju. Główne nowości:
- Do skryptu git-jump dodano wsparcie dla edytora Emacs, oprócz wcześniej obsługiwanego edytora Vim. Git-jump jest używany do przesyłania do edytora tekstu informacji o pozycjach w pliku, aby umożliwić szybką nawigację i przejście do edycji kodu w określonym miejscu. Na przykład git-jump może być używane do przełączania się w edytorze pomiędzy liniami, które wynikły z analizy konfliktów scalania, oceny różnic i wykonywania wyszukiwania (można wykonać „git jump grep foo” i następnie szybko przełączać się między pozycjami, w których pojawia się maska „foo”).
- W „git cat-file” dodano wsparcie dla stosowania opcji „-s” i „—batch-check” wraz z „—use-mailmap” w celu poprawnego określenia rozmiaru obiektu z uwzględnieniem zamiany identyfikatora, dokonanej na podstawie powiązań z emailem, zapisanych w pliku mailmap (wcześniej opcja „—use-mailmap” wpływała tylko na wyjście zawartości, ale nie brała pod uwagę, że stare i zastąpione pary imię/email mogą mieć różny rozmiar).
- Do komendy „git check-attr” dodano opcję „—source” do wyboru drzewa z wymaganym plikiem „.gitattributes”, który będzie użyty do określenia aktualnych atrybutów w przypadku, gdy w repozytorium znajduje się wiele plików „.gitattributes”.
- Implementacja komendy „git bisect” została przepisana w języku C i wbudowana w główny plik wykonywalny git (wcześniej komenda była realizowana w formie skryptu Shell).
- Usunięto starą implementację polecenia „git add —interactive”, napisaną w Shell (w git 2.26 zaproponowano wbudowaną wersję w C, ale stara implementacja w Shell pozostała dostępna i była regulowana ustawieniem add.interactive.useBuiltin).
- Do polecenia „git merge-tree” dodano opcję ‘—merge-base’.
- Do polecenia „git range-diff” dodano opcję „—abbrev=”.
- Dodano możliwość nadpisania edytora list dla trybu interaktywnego polecenia rebase poprzez ustawienie zmiennej GIT_SEQUENCE_EDITOR za pomocą polecenia „git var”, podobnie jak w przypadku „git var GIT_EDITOR”.
- Do podsystemu zarządzania kontami dodano wsparcie dla haseł z ograniczonym czasem ważności.
- W skryptach autouzupełniania dla Bash wprowadzono tryb działania bez uwzględniania wielkości liter.
Źródło: opennet.ru
