Geri Dön
git commit yalnızca eklediğiniz yolları değil, tüm indeksi gönderir
SiTech AI Team2 წთ. საკითხავი

git commit yalnızca eklediğiniz yolları değil, tüm indeksi gönderir

Vodou CTO'su Chad Priest, ajanların birkaç yol eklediği ama commit'in onlarca dosya gönderdiği iki olayı anlatıyor: Git'te indeks her worktree için tektir ve tüm oturumlar onu paylaşır.

Vodou'nun CTO'su Chad Priest, dev.to'daki yazısında aynı checkout'ta çalışan ajanların birbirlerinin değişikliklerini commit'lediği iki olayı anlattı.

Sekiz yol eklendi, yirmi dosya değişti

9 Eylül 2026'da deposundaki bir ajan oturumu indekse sekiz yol ekledi; hepsi gateway dizinindeki MCP-servers/Vodou-Console/ altındaydı ve ardından git commit çalıştırdı. Git'in yanıtı "20 files changed" oldu. Kalan on iki dosya aynı checkout'ta çalışan başka bir oturuma aitti; o oturum indekse çoktan on üç dosya koymuştu, aralarında 466 satırlık bir test fixture'ı ve motorun büyük bir bölümü vardı.

Bu ilk kez olmuyordu. 28 Temmuz 2026'da bir oturum lease özelliği için üç yol ekledi ve paralel bir oturum onun add ile commit arasında git add çalıştırdı: commit motorun daemon'undan 185 satırlık bir parçayı, MCP-servers/brain/ altındaki dört dosyayı ve scripts/build-server-bundle.sh dosyasını süpürdü.

Neden belirli yolları eklemek yetmiyor

Priest'in o dönemdeki kuralı netti: yalnızca açık yolları ekle, asla git add -A çalıştırma. Kurala neredeyse bir ay güvendiğini ve yanıldığını söylüyor: kural tek bir aktörün seçimini düzeltiyor, commit'in ne okuduğunu değiştirmiyor.

Argümansız git commit, eklediğiniz şeyi değil indeksi commit'ler ve her worktree için tek bir indeks vardır: .git/index. O worktree'deki her oturum aynı dosyayı okur ve yazar; bu yüzden tek bir git add, başka süreçlerin de yazdığı bir belleğe yapılan tek bir yazıdır. Temmuz'da komşu süreç onun penceresi içinde yazdı; Eylül'de komşunun işi oturum başlamadan önce indeksteydi.

İki çözüm ve yalıtımın sınırları

Git'i denklemden çıkarınca arıza, yayımlama adımının sürecin bildirdiği girdiler yerine alanın tamamının anlık görüntüsünü aldığı ortak ve değişken bir staging alanıdır. Priest bunu tek worktree'yi paylaşan paralel kodlama ajanlarında görüyor.

İlk çözüm, yol listesiyle çalışan git commit --only: yalnızca adı verilen yolların çalışma kopyası sürümünü commit'ler. İki ajan aynı dosyayı düzenlediyse bu yetmez ve özel bir indekse geçti: GIT_INDEX_FILE=/tmp/agent-a.index, ardından git read-tree HEAD ve git apply --cached. Her ajan için ayrı worktree standart öneridir, ancak ajanların tek bir çalışan sistemi düzenlediği ve diğerlerinin değişikliklerini canlı görmek zorunda olduğu bu depoya uymadı.

Özel indeksle yapılan commit'ten sonra git status eskir ve HEAD'de zaten bulunan dosyaların silindiğini bildirir; bu yüzden git cat-file -e HEAD:path ile kontrol ediyor. Birden fazla yazarı olan her sistem için vardığı sonuç şu: eklediğinize değil, yayımlama adımının ne okuduğuna bakın.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.