Praca z dużymi repozytoriami
Git to powszechnie przyjęty i zalecany system kontroli wersji, ale należy podjąć kilka problemów i dbać o pracę z dużymi repozytoriami.
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
System plików VFS dla usługi 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 i wirtualnym systemem plików dla usługi Git: Włączanie usługi Git w skali przedsiębiorstwa.
Wartość skalarna
Skalar to aplikacja platformy .NET Core dostępna dla systemów Windows i macOS. Narzędzia i rozszerzenia usługi Git umożliwiają bardzo duże repozytoria zmaksymalizowanie wydajności poleceń usługi Git. 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:
- Klon częściowy: skraca czas uzyskiwania działającego repozytorium, nie pobierając od razu wszystkich obiektów Git.
- Pobieranie wstępne w tle: pobiera dane obiektów Git ze wszystkich zdalnych co godzinę, skracając czas pobierania na pierwszym planie wywołań git.
- Wyewidencjonowanie rozrzedowe: ogranicza rozmiar katalogu roboczego.
- Monitor systemu plików: śledzi ostatnio zmodyfikowane pliki i eliminuje konieczność skanowania całego drzewa roboczego przez usługę Git.
- Commit-graph: przyspiesza kroki zatwierdzania i obliczenia osiągalności, przyspieszając polecenia, takie jak dziennik git.
- Multi-pack-index: umożliwia szybkie wyszukiwanie obiektów w wielu plikach pakietów.
- Ponowne pakowanie przyrostowe: pakuje spakowane dane Git do mniejszej liczby plików pakietów bez zakłócania współbieżnych poleceń przy użyciu indeksu wielopakowego.
Uwaga
Aktualizujemy listę funkcji, które skalar automatycznie konfiguruje jako nową wersję usługi Git.
Aby uzyskać więcej informacji, zobacz: