Git depolarında sürüm geçmişini izlemek için yeni yöntem önerildi
Öne çıkanlar
- Binlerce tekil etiket kullanımı Git'in packed-refs dosyasını büyüterek komutları yavaşlattı.
- Yeni model, her ortam ve uygulama çifti için yalnızca tek bir referans tutuyor.
- İki ebeveynli işleme yapısı sayesinde sürüm geçmişi standart git log komutlarıyla taranabiliyor.
ZipRecruiter bünyesindeki monorepo deposunda binlerce etiket nesnesinin birikmesi nedeniyle Git performansında ciddi yavaşlamalar yaşandığı açıklandı. Yazılım geliştirici, dağıtım araçlarının her üretim veya hazırlık ortamı dağıtımında oluşturduğu uzun isimli etiketlerin packed-refs dosyasını şişirdiğini ve yerel işlemlerin yanı sıra sunucu tarafındaki komutları da geciktirdiğini belirtti.
Sorunun çözümü için her dağıtımı ayrı bir etiketle kaydetmek yerine, ortam ve uygulama başına tek bir referans kullanan iki ebeveynli işleme modeli önerildi. Bu yaklaşımda Git'in yerel tarihçe mekanizmasından yararlanılarak önceki sürümler birbiri ardına bağlanan özel işlemeler olarak kaydediliyor. Yeni model, binlerce etiket aramak yerine tek bir referans altında geçmişe doğru iz sürmeyi mümkün kılıyor.
Önerilen mimarinin geri alma işlemlerini kolaylaştırdığı ve git log ya da git diff gibi standart Git komutlarıyla doğrudan uyumlu çalıştığı vurgulandı. Depodaki 275 bin işlemelik geçmişin birkaç saniyede tarandığına dikkat çekilirken, yüzlerce sürümden oluşan bağlı listenin depoda herhangi bir performans kaybı yaratmayacağı ifade edildi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.