Geri qayıt
git commit yalnız əlavə etdiyiniz yolları deyil, bütün indeksi göndərir
SiTech AI Team2 წთ. საკითხავი

git commit yalnız əlavə etdiyiniz yolları deyil, bütün indeksi göndərir

Vodou-nun texniki direktoru Chad Priest agentlərin bir neçə yol əlavə etdiyi, commit-in isə onlarla fayl göndərdiyi iki halı təsvir edir: Git-də indeks hər worktree üçün birdir və bütün sessiyalar onu paylaşır.

Vodou-nun CTO-su Chad Priest dev.to-dakı yazısında eyni checkout-da işləyən agent sessiyalarının bir-birinin dəyişikliklərini commit etdiyi iki hadisəni təsvir edib.

Səkkiz yol əlavə edildi, iyirmi fayl dəyişdi

9 sentyabr 2026-cı ildə onun reposunda bir agent sessiyası indeksə səkkiz yol əlavə etdi, hamısı gateway qovluğundakı MCP-servers/Vodou-Console/ altında idi, və git commit işə saldı. Git-in cavabı "20 files changed" oldu. Qalan on iki fayl həmin checkout-da işləyən başqa sessiyaya aid idi və o, indeksə artıq on üç fayl qoymuşdu, aralarında 466 sətirlik test fixture-ı və mühərrikin böyük hissəsi var idi.

Bu ilk hal deyildi. 28 iyul 2026-cı ildə bir sessiya lease funksiyası üçün üç yol əlavə etdi, paralel sessiya isə onun add və commit arasında git add işlətdi: commit mühərrikin daemon-undan 185 sətirlik hissəni, MCP-servers/brain/ altındakı dörd faylı və scripts/build-server-bundle.sh-i içinə süpürdü.

Niyə açıq yolları əlavə etmək kifayət etmir

Priest-in o vaxtkı qaydası belə idi: yalnız açıq yolları əlavə et və heç vaxt git add -A işlətmə. Onun sözlərinə görə, o, təxminən bir ay bu qaydaya güvəndi və yanıldı: qayda yalnız bir iştirakçının seçimini nizamlayır, commit-in nə oxuduğunu dəyişmir.

Arqumentsiz git commit sizin əlavə etdiyinizi deyil, indeksi commit edir və hər worktree üçün indeks birdir: .git/index. Həmin worktree-dəki hər sessiya eyni faylı oxuyur və yazır, buna görə tək bir git add başqa proseslərin də yazdığı buferə yazıdır. İyulda qonşu proses onun pəncərəsində yazdı, sentyabrda isə qonşunun işi artıq indeksdə idi.

İki həll və təcridin sərhədləri

Git-i tənlikdən çıxarsaq, nasazlıq dərc mərhələsinin prosesin bəyan etdiyi girişlər yerinə bütün sahənin anlıq görüntüsünü götürdüyü ortaq və dəyişkən staging sahəsidir. Priest bunu bir worktree-ni bölüşən paralel kodlaşdırma agentlərində görür.

Birinci həll yol siyahısı ilə git commit --only-dir: yalnız adları çəkilən yolların işçi nüsxəsini commit edir. İki agent eyni faylı düzəldibsə bu yetmir və o, özəl indeksə keçdi: GIT_INDEX_FILE=/tmp/agent-a.index, sonra git read-tree HEAD və git apply --cached. Hər agent üçün ayrı worktree standart məsləhətdir, lakin agentlərin bir işləyən sistemi redaktə etdiyi və digərlərinin dəyişikliklərini canlı görməli olduğu bu repoya uyğun gəlmədi.

Özəl indekslə commit-dən sonra git status köhnəlir və HEAD-də artıq olan faylların silindiyini bildirir, buna görə o, git cat-file -e HEAD:path ilə yoxlayır. Bir neçədən çox yazanı olan hər sistem üçün gəldiyi nəticə budur: əlavə etdiyinizə deyil, dərc mərhələsinin nə oxuduğuna baxın.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.