Worktree ne zaman işe yarar?
İki bağımsız özellik üzerinde çalışırken aynı branch’te dosya yazımını paylaşmak istemeyebilirsin. Ayrı worktree’ler bu dosya alanlarını ayırır. Paket önbelleği, aynı portta çalışan servis veya dış veritabanı gibi ortak kaynaklar yine çakışabilir.
Bu rehberde önce manuel Git yöntemini gösteriyoruz. Son bölüm Arenor’un farklı davranışını açıklar: Arenor izolasyonu ajan başına değil, çalışma başınadır.
1. Yeni bir deneme deposu oluştur
Komutları yalnız yeni bir örnek klasörde çalıştır. Python 3 ve Git gerekir. Mevcut projenin üzerinde denemek yerine iki dosyalı bu örneği kullan. Demo kimliği yalnız bu yerel depoya yazılır.
mkdir arenor-worktree-demo
cd arenor-worktree-demo
git init -b main
git config user.name "Arenor Demo"
git config user.email "demo@example.invalid"
printf "label=Save\n" > button.txt
cat > check.py <<'PYTEST'
from pathlib import Path
label = Path("button.txt").read_text().strip()
assert label in {"label=Save", "label=Save changes"}, label
print("PASS: button label accepted")
PYTEST
git add button.txt check.py
git -c commit.gpgsign=false commit -m "Create demo"
git worktree add -b agent-ui ../agent-ui
git worktree add -b agent-review ../agent-review
git worktree list2. Bir klasörde değiştir, diğerini kontrol et
Bu aşamada inceleme worktree’si değişikliği görmez. Ajanlara yalnız aynı dosya adını söylemek yeterli değildir; hangi klasörü kullanacaklarını açık belirt.
printf "label=Save changes\n" > ../agent-ui/button.txt
(cd ../agent-ui && python3 check.py)
git -C ../agent-ui diff -- button.txt
cat button.txt
cat ../agent-review/button.txt3. İnceleme klasörünü güncelle
Gerçek projede yalnız ilgili dosyaları stage et; git diff, testler ve izlenmeyen dosyaları incele. --ff-only, review dalının ayrıştığı durumda otomatik bir merge commit oluşturmadan durur. Bu hata yeniden inceleme ihtiyacını gösterir.
git -C ../agent-ui add button.txt
git -C ../agent-ui -c commit.gpgsign=false commit -m "Clarify button label"
git -C ../agent-review merge --ff-only agent-ui
(cd ../agent-review && python3 check.py)4. Çakışmanın hâlâ mümkün olduğunu gör
İki branch aynı satırı farklı değiştirdi. Worktree bu çatışmayı önlemedi; yalnız çalışmalar sırasında dosyaları ayrı tuttu. Bu taze demoda merge öncesi her şey commit edildiği için aşağıdaki komutla merge denemesinden çıkabilirsin. Gerçek depoda önce yerel değişikliklerini koru.
printf "label=Save draft\n" > ../agent-review/button.txt
git -C ../agent-review add button.txt
git -C ../agent-review -c commit.gpgsign=false commit -m "Demonstrate conflicting label"
printf "label=Save now\n" > ../agent-ui/button.txt
git -C ../agent-ui add button.txt
git -C ../agent-ui -c commit.gpgsign=false commit -m "Alternative label for conflict demo"
git -C ../agent-ui merge agent-review
git -C ../agent-ui status --short5. Deneme birleştirmesinden çık
İş bitince temiz çalışma klasörlerini git worktree remove ile kaldırabilirsin. Commit edilmemiş değişiklik varsa önce neyi koruyacağını belirle; bu rehber zorla kaldırma veya reset komutu kullanmaz.
git -C ../agent-ui merge --abort
cat ../agent-ui/button.txt
git worktree listArenor’da aynı kavramın sınırları
- Git izolasyonu açıksa Arenor her çalışma için tek worktree oluşturur; o çalışmanın üyeleri bu klasörü paylaşır.
- Başlangıç HEAD’dir. Ana klasördeki commit edilmemiş dosyalar çalışma kopyasına taşınmaz.
- Oluşturma hatasında uyarıyla ana klasörde devam edilebilir; izolasyon durumunu kontrol et.
- “Ana kopyaya uygula” dosyaların başlangıç, çalışma ve güncel ana kopya durumlarını karşılaştırır; burada gösterilen Git merge komutu değildir.
- İnceleme sonrasında commit/push ayrı kullanıcı kararıdır. Worktree, ağ veya izin sandbox’ı değildir.
Doğrulama kaydı
2 Ekim 2026, Git 2.54.0 ve Python 3 ile yeni bir geçici depoda izolasyon, test, fast-forward inceleme, kasıtlı satır çakışması ve merge --abort akışı kontrol edildi. Model çağrısı veya gerçek kullanıcı projesi kullanılmadı. İş akışının doğrulanması, herhangi bir ajanın yazdığı kodun doğru olduğu anlamına gelmez.
Sorular
Worktree bütün çakışmaları önler mi?
Hayır. Çalışma klasörlerini ayırır; aynı dosyaların veya davranışların farklı değiştirilmesi birleştirme sırasında hâlâ inceleme gerektirir.
Arenor her ajan için ayrı worktree açıyor mu?
Hayır. İsteğe bağlı izolasyon çalışma başınadır. Aynı çalışmadaki üyelerin dosya kapsamı ve bağımlılıkları ayrıca planlanmalıdır.
