ş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.
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_codeiç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.