Wydanie kontroli źródła Git 2.36

Po trzech miesiącach prac wypuszczono rozproszony system kontroli źródła Git 2.36. 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, w nowej wersji zaadaptowano 717 zmian, przygotowanych przy udziale 96 programistów, z czego 26 brało udział w tworzeniu po raz pierwszy. Główne innowacje:

  • Polecenia „git log” i „git show” mają teraz opcję „—remerge-diff”, która pozwala pokazać różnice pomiędzy ogólnym wynikiem scalania a rzeczywistymi danymi odzwierciedlonymi w zatwierdzeniu po przetworzeniu polecenia „merge” , co pozwala jednoznacznie ocenić zmiany wprowadzone w wyniku rozwiązania konfliktów fuzji. Zwykłe polecenie „git show” powoduje wcięcie różnych rozwiązań konfliktów, co utrudnia zrozumienie zmian. Przykładowo na zrzucie ekranu poniżej linia „+/-” bez wcięcia pokazuje ostatnie rozwiązanie konfliktu związanego ze zmianą nazwy sha1 na oid w komentarzu w pierwszej gałęzi, a „+/-” z wcięciem pokazuje początkowe rozwiązanie konfliktu spowodowanego pojawieniem się dodatkowego argumentu w drugiej gałęzi funkcji dwim_ref().
    Wydanie kontroli źródła Git 2.36

    Podczas korzystania z opcji „--remerge-diff” różnice między sposobami rozwiązywania konfliktów nie są rozdzielane dla każdej gałęzi nadrzędnej, ale wyświetlane są ogólne różnice między plikiem, w którym występują konflikty scalania, a plikiem, w którym konflikty zostały rozwiązane.

    Wydanie kontroli źródła Git 2.36

  • Większa elastyczność w konfigurowaniu zachowania opróżniania pamięci podręcznej dysku poprzez wywołanie funkcji fsync(). Dostępny wcześniej parametr core.fsyncObjectFiles został podzielony na dwie zmienne konfiguracyjne core.fsync i core.fsyncMethod, zapewniając możliwość zastosowania fsync nie tylko do plików obiektowych (.git/objects), ale także do innych struktur git, takich jak łącza ( .git /refs), reflog i pliki spakowane.

    Za pomocą zmiennej core.fsync możesz określić listę wewnętrznych struktur Git, dla których fsync zostanie dodatkowo wywołany po operacji zapisu. Zmienna core.fsyncMethod umożliwia wybranie metody opróżniania pamięci podręcznej, na przykład można wybrać fsync, aby użyć wywołania systemowego o tej samej nazwie, lub określić opcję tylko do zapisu, aby używać zapisywania zwrotnego w pamięci podręcznej strony.

  • Aby zabezpieczyć się przed lukami w zabezpieczeniach manipulującymi zastępowaniem przez innych użytkowników katalogów .git we współdzielonych sekcjach, wzmocniono weryfikację właściciela repozytorium. Wykonywanie jakichkolwiek poleceń git jest teraz dozwolone tylko w jego własnych katalogach „.git”. Jeśli katalog z repozytorium należy do innego użytkownika, domyślnie wyświetli się błąd. To zachowanie można wyłączyć za pomocą ustawienia Safe.directory.
  • Polecenie „git cat-file”, przeznaczone do wyprowadzania zawartości źródłowej obiektów Git, zostało uzupełnione o opcję „--batch-command”, która uzupełnia dostępne wcześniej polecenia „--batch” i „--batch-check” ” z możliwością adaptacyjnego wyboru typu wyniku przy użyciu „ content <obiekt>” w celu wyświetlenia treści lub „info <obiekt>” w celu wyświetlenia informacji o obiekcie. Dodatkowo obsługiwane jest polecenie „flush” w celu opróżnienia bufora wyjściowego.
  • Do polecenia „git ls-tree”, służącego do wygenerowania listy zawartości drzewa obiektów, dodana została opcja „—oid-only” („—object-only”), podobna do „—name-only” ”, wyświetlając tylko identyfikatory obiektów, aby uprościć wywoływanie ze skryptów. Zaimplementowano także opcję „--format”, która umożliwia zdefiniowanie własnego formatu wyjściowego poprzez połączenie informacji o trybie, typie, nazwie i rozmiarze.
  • Komenda „git bisect run” implementuje wykrywanie braku ustawienia flagi pliku wykonywalnego dla skryptu i w tym przypadku wyświetlanie błędów z kodami 126 lub 127 (poprzednio, jeśli skrypt nie mógł zostać uruchomiony, wszystkie wersje były oznaczane jako zawierające problemy) .
  • Do polecenia „git fetch” dodano opcję --refetch, aby pobrać wszystkie obiekty bez informowania drugiej strony o zawartości znajdującej się już w systemie lokalnym. To zachowanie może być przydatne w przypadku odzyskiwania danych po awarii, gdy integralność danych lokalnych jest niepewna.
  • Polecenia „git update-index”, „git checkout-index”, „git read-tree” i „git clean” obsługują teraz indeksy częściowe, aby poprawić wydajność i zaoszczędzić miejsce w repozytoriach, które wykonują częściowe operacje indeksowania. ).
  • Zmieniono zachowanie polecenia „git clone —filter=… —recurse-submodules”, co obecnie prowadzi do częściowego klonowania podmodułów (poprzednio przy wykonywaniu takich poleceń filtr był stosowany tylko do treści głównej, a podmoduły były całkowicie sklonowany bez uwzględnienia filtra).
  • Do polecenia „git package” dodano obsługę określania filtrów do selektywnego umieszczania treści, podobnie jak w przypadku operacji częściowego klonowania.
  • Do polecenia „git Branch” dodano opcję „--recurse-submodules”, aby rekurencyjnie przeglądać podmoduły.
  • Userdiff oferuje nowy moduł obsługi języka Kotlin.

Źródło: opennet.ru

Dodaj komentarz