Share via


Git sınırları

Azure DevOps Services

Azure Repos'daki Git depolarına birkaç kaynak sınırı uyguluyoruz. Amacımız, tüm müşteriler için güvenilirlik ve kullanılabilirlik sağlamaktır. Ayrıca, veri miktarını ve gönderim sayısını makul tutarak Git ile daha iyi bir genel deneyim elde edebilirsiniz.

Git, Azure DevOps Services geri kalanıyla birlikte hız sınırlamaya da katılır. Buna ek olarak, depoların toplam boyutuna, göndermelere ve dosya ile dizin yollarının uzunluğuna sınırlar uygularız.

Depo boyutu

Depolar 250 GB'tan büyük olmamalıdır. Deponuzun boyutunu almak için komut isteminde "git count-objects -vH" komutunu yürüterek "size-pack" adlı girdiyi arayın:

D:\my-repo>git count-objects -vH

count: 482
size: 551.67 KiB
in-pack: 100365
packs: 25
size-pack: 642.76 MiB   <-- size of repository
prune-packable: 83
garbage: 0
size-garbage: 0 bytes

En iyi çalışma için deponuzu 10 GB'ın altında tutmanızı öneririz. Deponuz bu boyutu aşarsa geliştirme yapıtlarınızı yeniden düzenleme amacıyla Git-LFS, Scalar veya Azure Artifacts kullanmayı göz önünde bulundurun.

Azure Repos, benzer dosyaları paketler halinde birleştirerek genel boyutu sürekli olarak azaltır ve Git depolarının verimliliğini artırır. 250 GB'a yakın depolar için, iyileştirme işlemi tamamlanmadan önce paket dosyalarındaki iç sınıra ulaşılabilir. Depoya yazmaya çalışan tüm kullanıcılar şu hata iletisini görür: "Git paketi dosya sınırına ulaşıldı, depo güncelleştirilirken yazma işlemleri geçici olarak kullanılamıyor." Yazma işlemleri iş tamamlandıktan hemen sonra geri yüklenir.

Gönderme boyutu

Büyük gönderimler, hizmetin diğer bölümlerini engelleyerek veya yavaşlatarak çok fazla kaynak kullanır. Bu tür gönderimler genellikle normal yazılım geliştirme etkinlikleriyle eşlenemez. Örneğin, birisi yanlışlıkla derleme çıkışlarını veya bir VM görüntüsünü iade etmiş olabilir. Bu nedenlerle ve daha fazlası için gönderimler bir kerede 5 GB ile sınırlıdır.

Büyük gönderimlerin normal olduğu bir özel durum vardır. Depoları başka bir hizmetten Azure Repos geçirdiğinizde, tek bir gönderim olarak gelir. Çok büyük depolarda bile içeri aktarmaları engellemeyi amaçlamıyoruz. Depo 5 GB'tan büyükse, komut satırı yerine depoyu içeri aktarmak için web'i kullanmanız gerekir.

LFS nesneleri için gönderme boyutu

Git LFS , 5 GB'lık depo sınırına doğru sayılmaz. 5 GB sınırı yalnızca gerçek depodaki dosyalar içindir, LFS'nin bir parçası olarak depolanan bloblar için değildir. 5 GB sınırında başarısız gönderimler alırsanız, dosyanızın .gitattributes LFS kullanarak izlemek istediğiniz dosyaların uzantılarını içerdiğini ve izlenecek büyük dosyaları hazırlamadan önce bu dosyanın kaydedilip hazırlandığını doğrulayın.

Yol uzunluğu

Azure Repos, git deposundaki yolların uzunluğunu çok uzun yollara neden olan göndermeleri reddederek sınırlayan bir gönderme ilkesine sahiptir. Maksimum yol uzunluğu ilkesinden farklı olarak, platformumuz tarafından desteklenen maksimum olası değerleri zorladığı için bu ilkeyi farklı bir sınırla devre dışı bırakmanın veya geçersiz kılmanın hiçbir yolu yoktur.

Zorlanan iki sınır vardır:

  • Toplam yol uzunluğu: 32.766 karakter
  • Yol bileşeni uzunluğu (klasör veya dosya adı): 4096 karakter

Yalnızca bir gönderimde yeni tanıtılan yolları etkiler. Var olan bir dosyayı değiştirirseniz, bu geçerli değildir. Ancak yeni bir dosya oluşturursanız veya mevcut bir dosyayı yeniden adlandırır veya taşırsanız geçerli olur.

Gönderilen işlemelerden bazıları sınırları aşan yollar eklerse, gönderme aşağıdaki hata iletilerinden biriyle reddedilir:

  • VS403729: The push was rejected because commit '6fbe8dc700fdb33ef512e2b9e35436faf555de76' contains a path, which exceeds the maximum length of 32766 characters.
  • VS403729: The push was rejected because commit 'd23277abfe2d8dcbb88456da880de631994dabb4' contains a path component, which exceeds the maximum length of 4096 characters.