wydanie rozproszonego systemu zarządzania tekstami źródłowymi . Git jest jednym z najpopularniejszych, najbardziej niezawodnych i wydajnych systemów zarządzania wersjami, oferującym elastyczne narzędzia do nieliniowego rozwoju, oparte na rozgałęzianiu i scalaniu gałęzi. Dla zapewnienia integralności historii i odporności na zmiany „wstecz” stosowane jest niejawne haszowanie całej poprzedniej historii w każdym commicie, a także możliwe jest uwierzytelnienie cyfrowymi podpisami deweloperów poszczególnych tagów i commitów.
W porównaniu z poprzednią wersją w nowej wersji wprowadzono 537 zmian, przygotowanych przy współpracy 71 programisty, z których 19 po raz pierwszy wzięło udział w rozwoju. Główne :
- Wycofano realizowane w poprzedniej wersji włączenie domyślne protokołu komunikacyjnego Git, który jest używany podczas zdalnego połączenia klienta z serwerem Git. Protokół uznano obecnie za niegotowy do użycia domyślnie z powodu wykrycia problematycznych elementów, które wymagają osobnego rozpatrzenia.
- Dodano zestaw opcji do konfiguracji połączenia SSL przy korzystaniu przez proxy.
- Rozszerzono informacje wydawane przy użyciu filtrów transformacyjnych «clean» i «smudge». Na przykład teraz pokazuje obiekt , który zawiera przekształcany blob.
- Aby uniknąć zamieszania w poleceniu «git describe», teraz zawsze stosowany jest rozszerzony tryb wyjścia («—long»), jeśli wykryto powiązany z commitem zamieniony tag (wcześniej, podpisany lub adnotowany tag, opisujący commit, był wyświetlany nawet jeśli został przemianowany lub przeniesiony w hierarchii «refs/tags/», a polecenie «git show tag^0» nie działało jak oczekiwano — «refs/tags/tag» nie było znajdowane lub nawet wyświetlane jako inny tag).
- Podczas wykonywania «git pull» teraz wyświetlane jest ostrzeżenie, jeśli nie określono jawnie zmiennej konfiguracyjnej pull.rebase i nie zastosowano opcji «—[no-]rebase» lub «—ff-only». Aby stłumić ostrzeżenie ci, którzy nie zamierzają przeprowadzać operacji rebase, mogą ustawić wartość zmiennej na «false».
- Przeprowadzono rewizję opcji «git pull», wspólnych z «git fetch». Udokumentowano wcześniej nie wymienione podobne opcje i zapewniono przekazywanie do «git fetch» pominiętych opcji.
- Do polecenia «git rebase» dodano opcję «—no-gpg-sign» do nadpisania ustawienia «commit.gpgSign».
- W «git format-patch» dodano możliwość wyświetlenia nagłówków «From:» i «Subject:» w niezmienionej formie, bez przekształcania znaków, które nie występują w kodowaniu ASCII.
- W «git log» dodano opcję «—show-pulls», która umożliwia przeglądanie nie tylko commitów, w których wprowadzono zmiany, ale także commitu do scalania tych zmian z oddzielnej gałęzi.
- Ujednolicono obsługę interaktywnego wejścia we wszystkich komponentach i dodano wywołanie fflush() po pokazaniu zaproszenia do wprowadzenia, ale przed operacją odczytu.
- W «git rebase» pozwalają na ponowne zastosowanie wszystkich lokalnych commitów bez wcześniejszego wykonywania operacji «checkout», nawet jeśli niektóre z nich były wcześniej przesłane do upstream.
- Wartość zmiennej konfiguracyjnej ‘pack.useSparse’ zmieniono na ‘true’, aby domyślnie włączyć optymalizacje, wcześniej traktowane jako eksperymentalne.
- Do «git merge» dodano opcję «—autostash».
- Ulepszono interfejs «sparse-checkout».
- Do «git update-ref —stdin» dodano kilka nowych działań,
pozwalających na bezpośrednie kontrolowanie transakcji aktualizacji referencji, na przykład w celu wdrożenia dwustopniowej atomowej aktualizacji referencji w kilku repozytoriach. - Dodano wzorce userdiff dla dokumentów Markdown.
- Usunięto ograniczenie wykluczające wszystkie ścieżki w wzorcach sparse-checkout prowadzących do pustego drzewa roboczego.
- Operacja «git restore —staged —worktree» teraz domyślnie korzysta z zawartości z gałęzi «HEAD», zamiast zgłaszać błąd.
- Kontynuowano pracę nad przejściem na algorytm haszowania SHA-2 zamiast SHA-1.
- Przeprojektowano kod dla interakcji z GnuPG.
Źródło: opennet.ru
