Praca z dużymi repozytoriami
Git to powszechnie przyjęty i zalecany system kontroli wersji, ale przy pracy z dużymi repozytoriami należy uwzględnić kilka kwestii i zadbać o ich rozwiązanie.
Chociaż lokalna kopia repozytoriów w rozproszonym systemie kontroli wersji jest funkcjonalna, może to być istotny problem, gdy znajdują się duże repozytoria.
Na przykład firma Microsoft wykryła ten problem podczas migrowania repozytorium z ponad 300 GB danych z systemu wewnętrznego do usługi Git.
Dlaczego repozytoria stają się duże
Istnieją dwie główne przyczyny dużych repozytoriów:
- Długa historia
- Duże pliki binarne
Płytki klon
Jeśli deweloperzy nie potrzebują całej dostępnej historii w swoich repozytoriach lokalnych, dobrym rozwiązaniem jest zaimplementowanie płytkiego klonu.
Oszczędza to zarówno miejsce w lokalnych systemach deweloperskich, jak i czas potrzebny na synchronizację.
Możesz określić głębokość klonu, który chcesz wykonać:
git clone --depth [depth] [clone-url]
Klony można również zmniejszyć, filtrując gałęzie lub klonując tylko jedną gałąź.
System plików VFS dla usługi Git
VFS for Git ułatwia obsługę dużych repozytoriów. Wymaga to klienta git LFS.
Nie ma to wpływu na typowe polecenia usługi Git, ale usługa Git LFS współpracuje ze standardowym systemem plików w celu pobrania niezbędnych plików w tle, gdy potrzebujesz plików z serwera.
Klient git LFS został wydany jako open source. Protokół jest prosty z czterema punktami końcowymi podobnymi do punktów końcowych REST.
Aby uzyskać więcej informacji na temat dużych repozytoriów, zobacz: Praca z dużymi plikami oraz Wirtualny system plików dla Git: Włączanie Git na skalę przedsiębiorstwa.
Skalar
Skalar to aplikacja platformy .NET Core dostępna dla systemów Windows i macOS. Narzędzia i rozszerzenia do Git pozwalają na zwiększenie wydajności poleceń Git przy pracy z bardzo dużymi repozytoriami. Firma Microsoft używa go dla repozytoriów systemu Windows i pakietu Office.
Jeśli usługa Azure Repos hostuje repozytorium, możesz sklonować repozytorium przy użyciu protokołu GVFS.
Osiąga to dzięki włączeniu niektórych zaawansowanych funkcji usługi Git, takich jak:
- klonowanie częściowe: skraca czas, aby uzyskać działające repozytorium, nie pobierając od razu wszystkich obiektów Git.
- pobieranie w tle: pobiera dane obiektów Git ze wszystkich zdalnych co godzinę, skracając czas przyszłych aktywnych wywołań git fetch.
- Sparse-checkout: ogranicza rozmiar katalogu roboczego.
- Monitor systemu plików: śledzi ostatnio zmodyfikowane pliki i eliminuje konieczność skanowania całego drzewa roboczego przez usługę Git.
- graf zatwierdzania: przyspiesza kroki zatwierdzania i obliczenia osiągalności, przyspieszając polecenia, takie jak dziennik git.
- wielopaczkowy indeks: umożliwia szybkie wyszukiwanie obiektów w wielu plikach pakietów.
- przyrostowe przepakowanie: przepakowuje dane Git w mniej plików pakietów bez zakłócania współbieżnych poleceń przy użyciu indeksu wielopakowego.
Notatka
Aktualizujemy listę funkcji, które Scalar automatycznie konfiguruje, gdy nowa wersja Git jest wydana.
Aby uzyskać więcej informacji, zobacz: