Wydanie kontroli źródła Git 2.35

Po dwóch miesiącach prac wypuszczono rozproszony system kontroli źródła Git 2.35. 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 494 zmiany, przygotowane przy udziale 93 programistów, z czego 35 brało udział w tworzeniu po raz pierwszy. Główne innowacje:

  • Rozszerzono możliwości wykorzystania kluczy SSH do cyfrowego podpisywania obiektów Git. Aby ograniczyć okres ważności kilku kluczy, dodano obsługę dyrektyw OpenSSH „ważny przed” i „ważny po”, dzięki którym można zapewnić poprawną pracę z podpisami po zmianie klucza przez jednego z programistów. Wcześniej był problem z rozdzieleniem podpisów starym i nowym kluczem – jeśli usuniesz stary klucz, nie będzie możliwości sprawdzenia złożonych nim podpisów, a jeśli go zostawisz, to nadal będzie można utwórz nowe podpisy przy użyciu starego klucza, który został już zastąpiony innym kluczem. Używając funkcji valid-before i valid-after można rozdzielić zakres kluczy na podstawie czasu utworzenia podpisu.
  • W ustawieniu merge.confusedStyle, które pozwala wybrać tryb wyświetlania informacji o konfliktach podczas scalania, pojawiła się obsługa trybu „zdiff3”, który przenosi wszystkie standardowe linie określone na początku lub na końcu konfliktu poza konflikt powierzchni, co pozwala na bardziej zwartą prezentację informacji.
  • Do polecenia „git stash” dodano tryb „--stage”, który pozwala ukryć tylko zmiany dodane do indeksu, np. w sytuacji, gdy trzeba tymczasowo odłożyć niektóre skomplikowane zmiany, aby najpierw dodaj to, co już jest gotowe, a resztą zajmij się po chwili. Tryb jest podobny do polecenia „git commit”, zapisuje tylko zmiany umieszczone w indeksie, ale zamiast tworzyć nowe zatwierdzenie w „git stash —staged”, wynik jest przechowywany w obszarze tymczasowym skrytki. Gdy zmiany będą potrzebne, można je przywrócić za pomocą polecenia „git stash pop”.
  • Do polecenia „git log” dodano nowy specyfikator formatu, „-format=%(description)”, który umożliwia połączenie danych wyjściowych polecenia „git log” z danymi wyjściowymi polecenia „git require”. Parametry „git opisz” są określone bezpośrednio w specyfikatorze („-format=%(description:match= ,wyklucz= )"), w którym możesz zawrzeć także skrócone tagi („-format=%(description:tags= )") i skonfiguruj liczbę znaków szesnastkowych identyfikujących obiekty („--format=%(description:abbrev= )"). Na przykład, aby wyświetlić listę ostatnich 8 zatwierdzeń, których znaczniki nie mają znacznika Release Candidate i określić 8-znakowe identyfikatory, możesz użyć polecenia: $ git log -8 —format='%(describe:exclude=*-rc *,skrót=13)' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642 56-gb95bd 8bbc7f2.34.1 v203-9-gffb2980902f2.34.1d v640-3- gdf41c212adeb2.34.1 v639-36-g65715b4132aXNUMX
  • Ustawienie user.signingKey obsługuje teraz nowe typy kluczy, które nie są ograniczone do typu „ssh-” i określenia pełnej ścieżki pliku do klucza. Alternatywne typy są określane za pomocą przedrostka „key::”, na przykład „key::ecdsa-sha2-nistp256” dla kluczy ECDSA.
  • Zauważalnie wzrosła szybkość generowania listy zmian w trybie „-histogram”, a także przy użyciu opcji „—color-moved-ws”, sterującej podświetlaniem spacji w różnicowaniu kolorów.
  • Polecenie „git jump”, używane do dostarczenia Vimowi informacji o dokładnym skoku do żądanej pozycji w pliku podczas analizowania konfliktów scalania, przeglądania różnic lub wykonywania operacji wyszukiwania, zapewnia możliwość zawężenia objętych konfliktów scalania. Na przykład, aby ograniczyć operacje tylko do katalogu „foo”, możesz określić „git jump merge - foo”, a aby wykluczyć z przetwarzania katalog „Dokumentacja” – „git jump merge - ':^Documentation'"
  • Poczyniono prace nad ujednoliceniem użycia typu „size_t” zamiast „unsigned long” dla wartości reprezentujących wielkość obiektów, co umożliwiło zastosowanie filtrów „clean” i „smudge” przy plikach większych niż 4 GB na wszystkich platformach, w tym platformach z modelem danych LLP64, typ „unsigned long”, w którym jest ograniczony do 4 bajtów.
  • Do polecenia „git am” dodano opcję „-empty=(stop|drop|keep)”, która pozwala wybrać zachowanie pustych wiadomości niezawierających łat podczas analizowania łat ze skrzynki pocztowej. Wartość „stop” zakończy całą operację łatania, „drop” pominie pustą łatkę, a „keep” utworzy puste zatwierdzenie.
  • Dodano obsługę indeksów częściowych (indeks rzadki) do poleceń „git reset”, „git diff”, „git winy”, „git fetch”, „git pull” i „git ls-files”, aby poprawić wydajność i zaoszczędzić miejsce w repozytoria, w których wykonywane są operacje częściowego klonowania (sparse-checkout).
  • Polecenie „git sparse-checkout init” stało się przestarzałe i powinno zostać zastąpione przez „git sparse-checkout set”.
  • Dodano wstępną implementację nowego backendu, który można zmienić, do przechowywania odniesień, takich jak gałęzie i znaczniki, w repozytorium. Nowy backend wykorzystuje pamięć blokową wykorzystywaną w projekcie JGit i jest zoptymalizowany do przechowywania bardzo dużej liczby odniesień. Backend nie jest jeszcze zintegrowany z systemem refs i nie jest gotowy do praktycznego zastosowania.
  • Paleta kolorów polecenia „git grep” została dostosowana tak, aby pasowała do narzędzia GNU grep.

Źródło: opennet.ru

Dodaj komentarz