Wydanie systemu kontroli wersji Git 2.36

Po trzech miesiącach prac opublikowano wersję 2.36 rozproszonego systemu zarządzania kodem źródłowym Git. Git jest jednym z najpopularniejszych, niezawodnych i wydajnych systemów zarządzania wersjami, oferującym elastyczne narzędzia do nieliniowego rozwoju oparte na gałęzieniu i scalaniu. Aby zapewnić integralność historii i odporność na wprowadzenie zmian „wstecz”, wykorzystywane jest niejawne haszowanie całej poprzedniej historii w każdym commicie, a także możliwość potwierdzenia cyfrowymi podpisami deweloperów poszczególnych tagów i commitów.

W porównaniu do poprzedniego wydania w nowej wersji wprowadzono 717 zmian, które przygotowało 96 deweloperów, z których 26 uczestniczyło w projekcie po raz pierwszy. Główne nowości:

  • Do poleceń „git log” i „git show” dodano opcję „—remerge-diff”, która umożliwia wyświetlenie różnic między wspólnym wynikiem scalania a rzeczywistymi danymi zawartymi w commicie po przetworzeniu polecenia „merge”, co pozwala przejrzyście ocenić zmiany wprowadzone w wyniku rozwiązywania konfliktów podczas scalania. Zwykłe polecenie „git show” oddziela różne rozwiązania konfliktów wcięciem, co utrudnia interpretację zmian. Na przykład na poniższym zrzucie ekranu linie „+/-” bez wcięcia pokazują ostatnie rozwiązanie konfliktu związane z przemianowaniem w pierwszej gałęzi sha1 na oid w komentarzu, a „+/-” z wcięciem — początkowe rozwiązanie konfliktu, spowodowane wystąpieniem dodatkowego argumentu w funkcji dwim_ref() w drugiej gałęzi.
    Wydanie systemu kontroli wersji Git 2.36

    Przy użyciu opcji „—remerge-diff” różnice między rozwiązaniami konfliktów nie są oddzielane dla każdej macierzystej gałęzi, lecz pokazują ogólne różnice między plikiem, który zawiera konflikty scalania, a plikiem, w którym konflikty zostały rozwiązane.

    Wydanie systemu kontroli wersji Git 2.36
  • Zwiększona elastyczność w dostosowywaniu zachowania przy resetowaniu pamięci podręcznych dysków poprzez wywołanie funkcji fsync(). Dotychczasowy parametr core.fsyncObjectFiles został podzielony na dwie zmienne konfiguracyjne core.fsync i core.fsyncMethod, co pozwala na zastosowanie fsync nie tylko dla plików z obiektami (.git/objects), lecz także dla innych struktur git, takich jak odniesienia (.git/refs), reflog i pliki paczek.

    Za pomocą zmiennej core.fsync można określić listę wewnętrznych struktur Git, dla których po operacji zapisu dodatkowo zostanie wywołane fsync. Zmienna core.fsyncMethod pozwala wybrać metodę do zapisu pamięci podręcznej, na przykład można wybrać fsync do zastosowania w systemowym wywołaniu o tej samej nazwie lub określić writeout-only do zastosowania opóźnionego zapisu (writback pamięci podręcznej).

  • Aby chronić przed lukami bezpieczeństwa związanymi z manipulowaniem wprowadzaniem z innymi użytkownikami katalogów .git w współdzielonych obszarach, wzmocniono weryfikację właściciela repozytorium. Wykonywanie jakichkolwiek poleceń git jest teraz dozwolone tylko w swoich katalogach „.git”. Jeśli katalog z repozytorium należy do innego użytkownika, domyślnie zostanie wyświetlony błąd. Określone zachowanie można wyłączyć za pomocą ustawienia safe.directory.
  • Do polecenia „git cat-file”, które jest przeznaczone do wyświetlania oryginalnej zawartości obiektów Git, dodano opcję „—batch-command”, która uzupełnia wcześniej dostępne polecenia „—batch” i „—batch-check” o możliwość adaptacyjnego wyboru typu wyjścia przez wskazanie „contents ” do wyświetlenia zawartości lub „info ” do wyświetlenia informacji o obiekcie. Dodatkowo wspierane jest polecenie „flush” do zrzutu bufora wyjściowego.
  • Do polecenia „git ls-tree”, które ma na celu tworzenie listy zawartości drzewa obiektów, dodano opcję „—oid-only” (czyli „—object-only”), analogiczną do „—name-only”, wyświetlającą tylko identyfikatory obiektów dla uproszczenia wywołań ze skryptów. Zrealizowano również opcję „—format”, która pozwala zdefiniować własny format wyjścia, łącząc informacje o trybie, typie, nazwie i rozmiarze.
  • W poleceniu „git bisect run” wprowadzono określenie braku oznaczenia skryptu jako pliku wykonywalnego i w takim przypadku zwracania błędów z kodami 126 lub 127 (wcześniej, jeśli skrypt nie mógł być uruchomiony, wszystkie rewizje były oznaczane jako problematyczne).
  • Do polecenia „git fetch” dodano opcję „—refetch” do pobierania wszystkich obiektów bez informowania drugiej strony o treści, która już znajduje się w lokalnym systemie. Takie zachowanie może być przydatne do przywrócenia stanu po awariach, gdy nie ma pewności co do integralności lokalnych danych.
  • W poleceniach „git update-index”, „git checkout-index”, „git read-tree” i „git clean” dodano obsługę indeksów częściowych (sparse index), co pozwala zwiększyć wydajność i zaoszczędzić miejsce w repozytoriach, w których wykonywane są operacje częściowego klonowania (sparse-checkout).
  • Zmieniono zachowanie polecenia „git clone —filter=… —recurse-submodules”, które teraz prowadzi do częściowego klonowania submodułów (wcześniej przy wykonywaniu takich poleceń filtr stosowano tylko do głównej zawartości, a submoduły były klonowane w całości bez uwzględnienia filtra).
  • W poleceniu „git bundle” dodano obsługę wskazywania filtrów do selektywnego umieszczania zawartości na wzór operacji częściowego klonowania.
  • Do polecenia „git branch” dodano opcję „—recurse-submodules” do rekurencyjnego przeszukiwania submodułów.
  • W userdiff zaproponowano nowy handler dla języka Kotlin.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster