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:

  • Możliwość częściowego klonowania zbliża się do stabilizacji i pełnej gotowości, co pozwala na przeniesienie tylko części danych i pracę z niekompletną kopią repozytorium. Typowy klon kopiuje wszystkie dane z repozytorium, łącznie z każdą wersją każdego pliku w historii zmian. W przypadku bardzo dużych repozytoriów kopiowanie danych powoduje znaczny wzrost ruchu i miejsca na dysku, nawet jeśli programista jest zainteresowany tylko podzbiorem plików. Aby ułatwić pobranie tylko części działającego drzewa źródeł, w nowej wersji wprowadzono eksperymentalne polecenie „sparse-checkout” i nową opcję „--sparse” dla polecenia „clone”.

    Wcześniej proces selektywnego klonowania był wykonywany poprzez zadanie filtry do odfiltrowania niepotrzebnej treści oraz opcja „-no-checkout” uniemożliwiająca uzupełnianie brakujących plików. Następnie przed wykonaniem operacji checkout konieczne było włączenie ustawienia core.sparseCheckout oraz zdefiniowanie listy wykluczonych wzorców ścieżek w pliku .git/info/sparse-checkout. Na przykład, aby sklonować bez obiektów blob i zapobiec wyodrębnianiu plików z podkatalogów o głębokości 2 lub większej, możesz uruchomić:

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

    Nowa komenda „git sparse-checkout” znacznie upraszcza pracę i ogranicza proces organizacji pracy z niekompletnym repozytorium do następujących poleceń:

    git clone --filter=blob:none --sparse /twoje/repozytorium/tutaj repozytorium
    git sparse-checkout set /path/to/check/out

    Polecenie sparse-checkout umożliwia ustawienie listy ścieżek do pobrania (zestaw) bez ręcznej konfiguracji .git/info/sparse-checkout, a także wyświetlenie bieżącej listy ścieżek (lista) oraz włączenie lub wyłączenie częściowych pobrań (włącz /wyłączyć).

    Aby zoptymalizować pracę z bardzo dużymi repozytoriami i listami szablonów, „git konfiguracja core.sparseCheckoutCone", co ogranicza dozwolone wzorce (zamiast dowolnych wzorców .gitignore można określić, czy mają być sprawdzane wszystkie ścieżki i wszystkie pliki w danym podkatalogu). Na przykład, jeśli duże repozytorium ma katalog „A/B/C” i cała praca jest skupiona w podkatalogu „C”, to po włączeniu trybu sparseCheckoutCone zostanie wydane polecenie „git sparse-checkout set A/B/ C” wyodrębni całą zawartość „C”, ale z „A” i „B” wyodrębni tylko części niezbędne do pracy z „C”.

  • Z dokumentacji („git rebase -h”) usunięto wszystkie odniesienia do opcji „--preserve-merges”, która stała się przestarzała i powinna być używana zamiast tego do migracji zestawu zatwierdzeń.git rebase --rebase-scala".
  • Aby poprawić czytelność wiadomości z łatami wysyłanymi na listy mailingowe, dodano opcję „git format-patch —cover-from-desscription topic”, gdy jest określona, ​​jako temat wiadomości używany jest pierwszy akapit z tekstu opisu gałęzi list motywacyjny dotyczący zestawu łatek.
  • Zaimplementowano obsługę łącznego użycia polecenia „git Apply -3way” i ustawienia „merge.confusedStyle” („git Apply” uwzględnia teraz styl opisu konfliktu z merge.confusedStyle, gdy konieczne jest rozwiązanie konfliktu po próbie aby zastosować plik łatki 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 językowych Eliksir.
  • Do poleceń „git add”, „git commit”, „git reset” i innych dodano nową opcję - „-pathspec-from-file”, która umożliwia wczytanie listy ścieżek z pliku lub strumienia wejściowego , zamiast wyświetlać je w wierszu poleceń.
  • Rozwiązano problem z wykrywaniem zmian nazw na poziomie katalogu podczas zapisywania zatwierdzeń. Definicja nie zadziałała, jeśli zawartość podkatalogu została przeniesiona do katalogu głównego repozytorium.
  • Zaproponowano wstępną implementację przeprojektowanej komendy „git add -i”, umożliwiającej interaktywne dodawanie zmienionej treści, przepisanej z Perla do C. Trwa podobna przeróbka polecenia „git add -p”.
  • Komenda „git log –graph” została zrefaktoryzowana, generując obraz ASCII wykresu z historią zmian w repozytorium. Przeróbka umożliwiła znaczne ulepszenie i uproszczenie wydruku bez zniekształcania struktury opowieści, co rozwiązało np. problem z obrazem wychodzącym poza szerokość linii końcowej.
  • Opcja „git log --format=..” pozwala na zmianę formatu wyjściowego,
    rozszerzony o obsługę flag „l/L”, aby wyświetlać tylko część adresu e-mail wskazaną przed symbolem „@” (przydatne na przykład, gdy wszyscy programiści mają wszystkie e-maile w tej samej domenie).

  • Do polecenia „git submodule” dodano podkomendę „set-url”.
  • Zestawy testowe zostały zaktualizowane w ramach przygotowań do przejścia na
    algorytm mieszający SHA-2 zamiast SHA-1.

Źródło: opennet.ru

Dodaj komentarz