Arbeta med stora lagringsplatser

Slutförd

Git är ett bra versionskontrollsystem som ofta används och rekommenderas, men några problem bör göras och tas hand om när du arbetar med stora lagringsplatser.

Även om det finns en lokal kopia av lagringsplatser i ett distribuerat versionskontrollsystem kan det vara ett stort problem när stora lagringsplatser finns på plats.

Microsoft upptäckte till exempel det här problemet när du migrerade en lagringsplats med över 300 GB data från ett internt system till Git.

Varför lagringsplatser blir stora

Det finns två huvudsakliga orsaker till stora lagringsplatser:

  • Lång historia
  • Stora binära filer

Ytlig klon

Om utvecklare inte behöver all tillgänglig historik i sina lokala lagringsplatser är ett bra alternativ att implementera en ytlig klon.

Det sparar både utrymme på lokala utvecklingssystem och den tid det tar att synkronisera.

Du kan ange djupet för klonen som du vill köra:

git clone --depth [depth] [clone-url]

Du kan också minska klonerna genom att filtrera grenar eller klona endast en enda gren.

VFS för Git

VFS för Git hjälper till med stora lagringsplatser. Det kräver en Git LFS-klient.

Vanliga Git-kommandon påverkas inte, men Git LFS fungerar med standardfilsystemet för att ladda ned nödvändiga filer i bakgrunden när du behöver filer från servern.

Git LFS-klienten släpptes som öppen källkod. Protokollet är enkelt med fyra slutpunkter som liknar REST-slutpunkter.

Mer information om stora lagringsplatser finns i: Arbeta med stora filer och virtuellt filsystem för Git: Aktivera Git i företagsskala.

Skalär

Skärmbild av Scalar-ikonen.

Scalar är ett .NET Core-program som är tillgängligt för Windows och macOS. Med verktyg och tillägg för Git kan mycket stora lagringsplatser maximera git-kommandoprestanda. Microsoft använder det för Windows- och Office-lagringsplatser.

Om Azure Repos är värd för din lagringsplats kan du klona en lagringsplats med hjälp av GVFS-protokollet.

Det uppnås genom att aktivera några avancerade Git-funktioner, till exempel:

  • Partiell kloning: minskar tiden för att hämta en fungerande lagringsplats genom att inte ladda ned alla Git-objekt direkt.
  • Bakgrundsprefetch: laddar ned Git-objektdata från alla fjärrplatser varje timme, vilket minskar tiden för git-hämtningsanrop för förgrund.
  • Sparse-checkout: begränsar storleken på arbetskatalogen.
  • Övervakare av filsystem: spårar nyligen ändrade filer och eliminerar behovet av att Git genomsöker hela arbetsträdet.
  • Incheckningsdiagram: påskyndar incheckningssteg och nåbarhetsberäkningar, vilket påskyndar kommandon som git-logg.
  • Multi-pack-index: möjliggör snabba objektsökningar i många paketfiler.
  • Inkrementell ompaketering: Paketerar om packade Git-data till färre paketfiler utan att störa samtidiga kommandon med hjälp av multi-pack-index.

Kommentar

Vi uppdaterar listan över funktioner som Scalar konfigurerar automatiskt när en ny Git-version släpps.

Mer information finns i: