Aracılığıyla paylaş


Git sınırları

Azure DevOps Services

Tüm müşteriler için güvenilirlik ve kullanılabilirlik sağlamak için Azure Depoları'ndaki Git depolarına kaynak sınırları uygularız. Veri boyutlarını ve gönderim sayısını makul tutarak Git ile daha iyi bir genel deneyim bekleyebilirsiniz.

Git, Azure DevOps Services'in geri kalanıyla birlikte hız sınırlamaya da katılır. Buna ek olarak, depoların, göndermelerin toplam boyutuna 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 bir komut isteminde yürüterek git count-objects -vH "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 performans için deponuzu 10 GB'ın altında tutmanızı öneririz. Deponuz bu boyutu aşıyorsa geliştirme yapıtlarınızı yönetmek için 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. Bu sınıra ulaşıldığında, depoya yazma girişiminde bulunan 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, iyileştirme işi tamamlandıktan hemen sonra geri yüklenir.

Dosyalar 100 MB'tan büyük olmamalıdır. Bu sınır, Git deposunun en iyi performansını ve güvenilirliğini sağlamaya yardımcı olur. Büyük dosyalar, değişiklikleri kopyalama, getirme ve gönderme gibi depo işlemlerini önemli ölçüde yavaşlatabilir. Büyük dosyaları depolamanız gerekiyorsa, büyük dosyaları ana deponun dışında depolayarak ve yalnızca depo içinde bunlara yönelik başvuruları tutarak verimli bir şekilde işlemek için tasarlanmış Git LFS (Büyük Dosya Depolama) kullanmayı göz önünde bulundurun. Bu yaklaşım Git deponuzun performansını ve yönetilebilirliğini korumaya yardımcı olur.

Gönderme boyutu

Büyük gönderimler, hizmetin diğer bölümlerini engelleyerek veya yavaşlatarak önemli miktarda kaynak tüketir. Bu gönderimler genellikle tipik yazılım geliştirme etkinlikleriyle uyumlu değildir ve derleme çıkışları veya VM görüntüleri gibi öğeleri içerebilir. Bu nedenle gönderimler aynı anda 5 GB ile sınırlıdır.

Büyük gönderimlerin normal olduğu bir özel durum vardır: bir deponun başka bir hizmetten Azure Repos'a geçirilmesi. Bu tür geçişler tek bir gönderim olarak gelir ve büyük depolar için bile içeri aktarmaları engellemeyi amaçlamıyoruz. Depo 5 GB'ı aşarsa, 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çin geçerlidir, LFS ile depolanan bloblar için geçerli değildir. 5 GB sınırı nedeniyle başarısız gönderimlerle karşılaşırsanız dosyanızın .gitattributes LFS ile izlemeyi planladığınız dosyaların uzantılarını içerdiğinden emin olun. İzlenecek büyük dosyaları hazırlamadan önce bu dosyanın kaydedildiğinden ve hazırlandığından emin olun.

Yol uzunluğu

Azure Repos, aşırı uzun yollar getiren göndermeleri reddederek Git deposundaki yolların uzunluğunu sınırlayan bir gönderme ilkesi uygular. En fazla yol uzunluğu ilkesinden farklı olarak, platformumuz tarafından desteklenen en yüksek değerleri zorunlu kıldığından bu ilkeyi devre dışı bırakamaz veya geçersiz kılamazsınız.

Aşağıdaki sınırlar uygulanır:

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

Bu ilke yalnızca bir göndermede yeni tanıtılan yolları etkiler. Var olan bir dosyayı değiştirirseniz geçerli değildir, ancak yeni bir dosya oluşturursanız, var olan bir dosyayı yeniden adlandırır veya taşırsanız geçerli olur.

Gönderilen işlemeler bu 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.