Wydanie rozproszonego systemu kontroli źródła Git 2.25

Do dyspozycji wydanie rozproszonego systemu kontroli źródła Git 2.25.0. Git to jeden z najpopularniejszych, niezawodnych i wydajnych systemów kontroli wersji, który zapewnia elastyczne nieliniowe narzędzia programistyczne oparte na rozgałęzianiu i łączeniu gałęzi. Aby zapewnić integralność historii i odporność na zmiany wsteczne, w każdym zatwierdzeniu stosowany jest niejawny hasz całej poprzedniej historii, możliwa jest również weryfikacja poszczególnych tagów i zatwierdzeń za pomocą podpisów cyfrowych od programistów.

W porównaniu do poprzedniej wersji, nowa wersja zawierała 583 zmiany, przygotowane przy udziale 84 programistów, z czego 32 wzięło udział w tworzeniu po raz pierwszy. Głównym innowacje:

  • Częściowe klony, które pozwalają na migrację tylko części danych i pracę z niekompletną kopią repozytorium, zbliżają się do stabilizacji i pełnej gotowości. Normalny klon kopiuje wszystkie dane z repozytorium, w tym każdą wersję każdego pliku w historii rewizji. W przypadku bardzo dużych repozytoriów kopiowanie danych powoduje znaczny wzrost ruchu i miejsca na dysku, nawet jeśli deweloper jest zainteresowany tylko podzbiorem plików. Aby ułatwić uzyskanie tylko części drzewa roboczego kodu źródłowego, ta wersja wprowadza eksperymentalne polecenie „sparse-checkout” i nową opcję „--sparse” do polecenia „clone”.

    Wcześniej proces selektywnego klonowania przeprowadzano za pomocą zadania filtry aby odfiltrować zbędną zawartość i opcję "--no-checkout", aby wyłączyć uzupełnianie brakujących plików. Następnie, przed wykonaniem operacji checkout, konieczne było włączenie ustawienia core.sparseCheckout i zdefiniowanie listy wzorców dla wykluczonych ścieżek w pliku .git/info/sparse-checkout. Na przykład, aby klonować bez blobów i zabronić wyodrębniania plików z zagnieżdżonych katalogów o głębokości 2 lub większej, można wykonać:

    git clone --filter=blob:none --no-checkout /twoje/repozytorium/tutaj repozytorium
    $ cd repozytorium
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git konfiguracja core.sparseCheckout 1
    $git checkout .

    Nowe polecenie „git sparse-checkout” znacznie upraszcza pracę i sprowadza proces organizacji pracy z niekompletnym repozytorium do poleceń:

    git clone --filter=blob:none --sparse /twoje/repozytorium/tutaj repozytorium
    git sparse-checkout ustaw /ścieżkę/do/check/out

    Polecenie sparse-checkout umożliwia ustawienie listy ścieżek do pobrania (set) bez konieczności ręcznego konfigurowania .git/info/sparse-checkout, a także wydrukowanie bieżącej listy ścieżek (list) oraz włączenie lub wyłączenie częściowych pobrań (enable/disable).

    Aby zoptymalizować pracę z bardzo dużymi repozytoriami i listami szablonów, należy użyć ustawienia „git konfiguracja core.sparseCheckoutCone", co ogranicza dozwolone wzorce (zamiast dowolnych wzorców .gitignore, możesz określić, czy wszystkie ścieżki i wszystkie pliki w danym podkatalogu powinny zostać wyewidencjonowane). Na przykład, jeśli duże repozytorium ma katalog "A/B/C", a cała praca jest skoncentrowana w podkatalogu "C", to gdy włączony jest tryb sparseCheckoutCone, polecenie "git sparse-checkout set A/B/C" wyewidencjonuje całą zawartość "C", ale z "A" i "B" wyewidencjonuje tylko części niezbędne do pracy z "C".

  • Dokumentacja („git rebase -h”) usunęła wszelkie odwołania do opcji „--preserve-merges”, która została uznana za przestarzałą. Zamiast niej, w celu migracji zestawu zatwierdzeń, należy używać opcji „--preserve-merges”.git rebase --rebase-merges".
  • Aby poprawić czytelność wiadomości o poprawkach wysyłanych na listy mailingowe, dodano opcję „git format-patch --cover-from-description subject”, która, jeśli jest określona, ​​używa pierwszego akapitu tekstu opisu gałęzi jako tematu listu przewodniego do zestawu poprawek.
  • Wprowadzono obsługę łącznego użycia polecenia „git apply --3way” i ustawienia „merge.conflictStyle” („git apply” teraz bierze pod uwagę styl opisu konfliktu z merge.conflictStyle, gdy konieczne jest rozwiązanie konfliktu po próbie zastosowania pliku z poprawką do repozytorium).
  • Kod definicji funkcji używany w operacjach takich jak „git diff/grep --show-function/--function-context” został rozszerzony o obsługę definiowania granic funkcji w programach napisanych w Eliksir.
  • Do poleceń „git add”, „git commit”, „git reset” i innych dodano nową opcję „--pathspec-from-file”, która umożliwia załadowanie listy ścieżek z pliku lub strumienia wejściowego, zamiast wyświetlania ich w wierszu poleceń.
  • Naprawiono problem z wykrywaniem zmian nazw na poziomie katalogu podczas zapisywania zatwierdzeń. Wykrywanie nie działało, jeśli zawartość podkatalogu została przeniesiona do katalogu głównego repozytorium.
  • Zaproponowano wstępną implementację przerobionego polecenia „git add -i”, które umożliwia interaktywne dodawanie zmodyfikowanej zawartości, przepisane z języka Perl na język C. Trwają również prace nad podobną przeróbką polecenia „git add -p”.
  • Polecenie „git log --graph”, które generuje obraz ASCII grafu z historią zmian w repozytorium, zostało przebudowane. Przeróbka znacznie poprawiła i uprościła dane wyjściowe bez zniekształcania struktury historii, co na przykład rozwiązało problem z obrazem wykraczającym poza szerokość linii terminala.
  • Opcja „git log --format=..” pozwala zmienić format wyjściowy,
    Rozszerzono obsługę flag „l/L”, aby wyświetlać tylko część adresu e-mail określoną przed symbolem „@” (przydatne na przykład, gdy wszyscy programiści mają adresy e-mail w tej samej domenie).
  • Dodano podpolecenie „set-url” do polecenia „git submodule”.
  • Zestawy testowe zostały zaktualizowane w ramach przygotowań do przejścia na
    Algorytm skrótu SHA-2 zamiast SHA-1.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster