Wydanie kontroli źródła Git 2.38

Ogłoszono wydanie rozproszonego systemu kontroli źródła Git 2.38. Git to jeden z najpopularniejszych, niezawodnych i wydajnych systemów kontroli wersji, zapewniający elastyczne narzędzia do nieliniowego programowania oparte na rozgałęzianiu i łączeniu. Aby zapewnić integralność historii i odporność na zmiany wsteczne, w każdym zatwierdzeniu stosowane jest ukryte hashowanie całej poprzedniej historii, możliwe jest także certyfikowanie poszczególnych tagów i zatwierdzeń cyfrowymi podpisami programistów.

W porównaniu do poprzedniej wersji, nowa wersja zawierała 699 zmian, przygotowanych przy udziale 92 programistów, z czego 24 wzięło udział w rozwoju po raz pierwszy. Główne innowacje:

  • Główna struktura obejmuje narzędzie „skalarne”, opracowane przez firmę Microsoft do zarządzania dużymi repozytoriami. Narzędzie zostało pierwotnie napisane w języku C#, ale git zawiera zmodyfikowaną wersję w języku C. Nowe narzędzie różni się od polecenia git domyślnym włączeniem dodatkowych funkcji i ustawień, które wpływają na wydajność podczas pracy z bardzo dużymi repozytoriami. Na przykład, gdy używasz skalara, ma to zastosowanie:
    • Częściowe klonowanie w celu pracy z niekompletną kopią repozytorium.
    • Wbudowany mechanizm śledzenia zmian w systemie plików (FSMonitor), który pozwala obejść się bez przeszukiwania całego katalogu roboczego.
    • Indeksy obejmujące obiekty w różnych plikach paczek (opakowanie zbiorcze).
    • pliki commit-graph z indeksem wykresu zatwierdzeń używanym do optymalizacji dostępu do informacji o zatwierdzeniach.
    • Okresowe prace w tle mające na celu utrzymanie optymalnej struktury repozytorium w tle, bez blokowania sesji interaktywnej (prace wykonywane są raz na godzinę, aby proaktywnie pobrać świeże obiekty ze zdalnego repozytorium i zaktualizować plik o wykres zatwierdzeń oraz proces pakowania repozytorium jest uruchamiane każdej nocy).
    • tryb „sparseCheckoutCone”, który ogranicza dozwolone wzorce podczas częściowego klonowania.
  • Do polecenia „git rebase” dodano opcję --update-refs, aby aktualizować zależne gałęzie, które nakładają się na przenoszone gałęzie, zamiast konieczności ręcznego sprawdzania każdej zależnej gałęzi w celu przełączenia na wymagane zatwierdzenie.
  • Dostosowano polecenie „git rm” do indeksów częściowych.
  • Poprawiono zachowanie polecenia „git mv AB” podczas przenoszenia pliku z obszaru roboczego z częściowymi indeksami w trybie „stożek” do zakresu zewnętrznego, który nie ma tego trybu.
  • Format pliku bitmapy został zoptymalizowany do pracy z dużymi repozytoriami - dodano opcjonalną tabelę indeksów z listą wybranych zatwierdzeń i ich przesunięć.
  • Komenda „git merge-tree” implementuje nowy tryb, w którym na podstawie dwóch określonych zatwierdzeń wyliczane jest drzewo z wynikiem scalania, tak jakby historie tych zatwierdzeń zostały scalone.
  • Dodano ustawienie „safe.barerepository” umożliwiające kontrolowanie możliwości hostowania gołych repozytoriów (repozytoriów, które nie zawierają działającego drzewa) w innych repozytoriach git. Po ustawieniu na „jawne” możliwa będzie praca z gołymi repozytoriami znajdującymi się tylko w górnym katalogu. Aby móc umieszczać gołe repozytoria w podkatalogach, użyj wartości „all”.
  • Do polecenia „git grep” dodano opcję „-m” („-max-count”), która jest podobna do opcji o tej samej nazwie w GNU grep i pozwala ograniczyć liczbę wyświetlanych dopasowań.
  • Komenda „ls-files” implementuje opcję „--format” do konfiguracji pól wyjściowych (na przykład można włączyć wyświetlanie nazwy obiektu, trybów itp.).
  • W „git cat-file” podczas wyświetlania zawartości obiektów możliwe jest uwzględnienie powiązań autor-e-mail określonych w pliku mailmap.

Źródło: opennet.ru

Dodaj komentarz