Kilka dni temu zostało to ogłoszone Wydanie nowej wersji projektu Git 2.50, wprowadzając ponad 600 zmian napędzana przez aktywną społeczność, która tym razem liczyła 98 programistów, w tym 35 nowych współpracowników.
W nowej wersji Git 2.50 wprowadzono nowe polecenia (git-diff-pairs), nowe funkcje czyszczenia, filtrowania i konserwacji, zastąpiono rekurencyjny mechanizm scalania ORT, a także zwiększono wydajność i naprawiono błędy.
Najważniejsze cechy Git 2.50
W tej nowej wersji Git 2.50 jedną z najważniejszych nowych funkcji jest optymalizacja w leczeniu tzw. „opakowań odpadowych”, To znaczy pakiety obiektów, które są niedostępne lub nie są odwoływane przez gałęzie lub tagi. Tradycyjnie Git przechowywał te obiekty w pojedynczym, dużym pliku pakietu, co mogło powodować problemy z wydajnością podczas ponownego pakowania repozytoriów z wieloma z tych elementów.
Dzięki nowej wersji, Git umożliwia podzielenie tych pakietów śmieci na kilka mniejszych plików, co zmniejsza wykorzystanie dysku i poprawia wydajność wejścia/wyjścia dla operacji zbiorczych. Ponadto, si wprowadź opcję –combine-cruft-below-sizeco pozwala łączyć małe pakiety w jeden bardziej elastyczny niż poprzednia opcja –max-cruft-size, bez narzucania limitu na łączny rozmiar pliku. Ta nowa funkcja jest szczególnie przydatna w projektach z osieroconymi obiektami rozproszonymi w wielu pakietach.
Kolejnym ulepszeniem skierowanym do repozytoriów na dużą skalę jest eksperymentalne wsparcie dla przyrostowa aktualizacja Indeksy MIDX , który Przechowują informacje o obiektach w oddzielnych warstwach używając plików bitmapowych, co pozwala na szybsze aktualizacje w miarę dodawania nowych zatwierdzeń. Ten postęp jest krytyczny dla dużych repozytoriów, które wymagają szybkich operacji indeksowania bez konieczności całkowitego przebudowywania metadanych.
Całkowita wymiana rekurencyjnego silnika scalania na ORT
Git 2.50 wprowadza istotną zmianę trwałe usunięcie rekurencyjnego silnika fuzyjnego tradycyjny. Zamiast tego, skonsolidowano wykorzystanie ORT, A nowocześniejszy, łatwiejszy w utrzymaniu i wydajniejszy silnik fuzyjny. ORT nie tylko oferuje dokładniejszą analizę konfliktów, ale także pozwala sprawdzić, czy scalenie jest możliwe bez generowania dodatkowych obiektów. Ponadto polecenie merge-tree zawiera teraz opcję –quiet do użycia jako cichego sprawdzania scalenia bez modyfikowania repozytorium.
gitt-diff-pairs: rozwiązanie problemów ze skalowalnością
Przegląd kodu jest niewątpliwie jednym z filarów współczesnego rozwoju współpracy, a różnice lub rozbieżności między wersjami odgrywają ważną rolę w tym procesie. Wraz z pojawieniem się Git 2.50 wprowadzono rozwiązanie zaprojektowane z myślą o skalowalności: nowe polecenie git-diff-pairs.
Tradycyjnie, aby porównać dwie wersje, używa się polecenia takiego jak:
git diff HEAD~1 HEAD
Generuje to kompletną poprawkę zawierającą wszystkie zmiany między wymienionymi wersjami. Choć jest to skuteczne w wielu przypadkach, może być problemem wydajnościowym przy pracy z dużymi zestawami zmodyfikowanych plików.
Dlatego też git-diff-pairs został specjalnie zaprojektowany do pobierania surowych danych wejściowych bezpośrednio z danych wyjściowych git diff-tree i wydajnego oraz dokładnego generowania odpowiednich poprawek.
Użycie jest bardzo proste:
git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z
To polecenie pobiera dostarczone pary blobów i generuje dokładny wynik diff, zachowując informacje kontekstowe i umożliwiając podział pracy na mniejsze partie. Otwiera to drzwi do przetwarzania równoległego, poprawia wydajność zasobów i ułatwia skalowalność w narzędziach opartych na diff, takich jak GitLab.
Nowe funkcje czyszczenia, filtrowania i konserwacji
Git 2.50 zawiera kilka dodatkowych narzędzi mających na celu usprawnienie obsługi repozytorium:
- Polecenie zostało dodane git reflog upuść, która umożliwia całkowite usunięcie reflogu dla konkretnej gałęzi, co jest idealnym rozwiązaniem do czyszczenia historii pracy, gdy nie trzeba już przechowywać poprzednich odniesień.
- opcja -filtr Polecenie cat-file –batch jest teraz dostępne w systemie git i umożliwia filtrowanie wyników według typu obiektu.
Ponadto podkreślono również kilka wewnętrznych optymalizacji:
- Ulepszone wykorzystanie łączy symbolicznych z buforowaniem prefiksów i redukcją zbędnych sprawdzeń.
- Usunięcie zależności od języka Perl w dokumentacji i skryptach testowych i zastąpienie ich funkcjami powłoki lub implementacjami w języku C, dzięki czemu łatwiej jest je kompilować w systemach o minimalistycznej konfiguracji.
- W tym kontroler różnica użytkowników do analizy różnic w plikach .ini.
- Poprawiona zgodność polecenia git send-email z serwerami SMTP, takimi jak Outlook.
Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w następujący link.