şema · olgun

İçerik hash'iyle incremental sync

Bir push yalnız değişen dosyaları yeniden index'liyor; manifest sıralaması öldürülen bir job'ı zararsız kılıyor.

Bir push saniyeler sürmeli, baştan sona bir re-index değil. Değişiklik tespiti git diff ile değil, içerik hash'i ile.

bir push neyi tetikler
pushwebhook ya da poll
jobrepo başına tekilleştirilmiş
fetch + reset
sha256 diffmanifest'e karşı
sil + yeniden yazyalnız değişen path'ler
manifestgüncellendi

Neden diff değil hash

  • Rename'ler, mode değişiklikleri, submodule'ler, force-push'lar: dosya içeriğini karşılaştırınca hiçbiri özel durum değil.
  • git repo'su olmayan yerel bir dizin de birebir aynı yoldan geçiyor.
  • Manifest, read_code için de tek doğruluk kaynağı — agent yalnızca gerçekten index'lenmiş dosyaları okuyabiliyor.

Sıralamayla gelen çökme güvenliği

Bir dosyanın manifest satırı, chunk'ları silinmeden önce kaldırılıyor ve yeni chunk'lar yazıldıktan sonra geri konuyor. Yarı yolda öldürülen bir job, dosyayı "index'lenmemiş" görünür bırakıyor; bir sonraki sync onu baştan yapıyor, o kadar. Hiçbir şey asla yarım hâlde durmuyor.

#webhook #manifest #freshness

Bu notu beyaz tahtada gör →