git-parsec — Tek bir biletle worktree oluşturmaktan PR merge etmeye kadar
(github.com/erishforG)Git worktree tabanlı paralel geliştirme iş akışını otomatikleştiren bir CLI aracıdır.
Çözdüğü sorun
Branch değiştirmeden birden fazla bilet üzerinde aynı anda çalışırken git worktree iyi bir seçimdir.
Ancak gerçek iş akışında kullanmak için çok sayıda tekrarlı iş gerekir:
- worktree oluşturma ve branch adlandırma → tek satırda
parsec start PROJ-123 - push etme, PR oluşturma ve bilet bağlantısı ekleme → tek satırda
parsec ship PROJ-123 - CI kontrolü, merge ve worktree temizliği → tek satırda
parsec merge PROJ-123
Her seferinde tekrar edilen işler, artık her biri tek satırlık komutlara indirgeniyor.
Temel iş akışı
parsec start PROJ-123 # worktree + branch + Jira bileti entegrasyonu
# ... kodlama ...
parsec ship PROJ-123 # push → PR oluşturma (bilet başlığı/bağlantısı otomatik eklenir)
parsec ci PROJ-123 # CI durum tablosunu gösterir
parsec merge PROJ-123 # CI bekleme → squash merge → otomatik worktree temizliği
Başlıca özellikler
Takip sistemi entegrasyonu
- Jira / GitHub Issues — bilet başlığını otomatik yansıtma, durum geçişleri, board görünümü, inbox
parsec ticket— terminalden bilet detaylarını görüntülemeparsec board— Jira sprint board'unu CLI üzerinden görüntüleme
Worktree yönetimi
- Shell entegrasyonu —
parsec switchile worktree'ler arasında otomatikcdgeçişi - Stack PR —
--onseçeneğiyle PR zinciri kurma,stack syncile toplu rebase - Undo — yanlışlıkla temizlenen worktree'leri tek hamlede geri yükleme
Otomasyon
- Release — tag + merge + GitHub Release + changelog otomatik oluşturma
- Human / JSON / Quiet çıktı modları — CI script entegrasyonu için uygun
- 27 alt komut — start, list, status, ship, merge, ci, diff, sync, adopt, rename vb.
Kurulum
cargo install git-parsec
Alternatif olarak GitHub Releases sayfasından macOS / Linux binary dosyalarını indirebilirsiniz.
Kimler için faydalı
- Aynı anda birden fazla bilet üzerinde çalışanlar (worktree tabanlı paralel geliştirme)
- Jira + Git arasındaki tekrarlı işlerden sıkılanlar
- Monorepo içinde context switching maliyetini azaltmak isteyenler
- Yapay zeka agent'larına (Claude Code vb.) bağımsız çalışma ortamı vermek isteyenler
Bağlantılar
- GitHub: https://github.com/erishforG/git-parsec
- Kurulum:
cargo install git-parsec
Rust ile yazıldığı için hafiftir ve mevcut git repository'lerine doğrudan uygulanabilir.
Geri bildirim ve sorulara açığız!
6 yorum
Kısa süre önce paralel worktree ile ilgili teknik blog yazısını görüp ilgimi çekmişti, ancak uygulama detaylarını göremediğim için hayal kırıklığı yaşamıştım; sanırım bu açık kaynakla konuyu bir kez derinlemesine ele almak gerekecek!
Aşağıda benim gördüğüm blog yazısı var.
https://medium.com/ajd-tech/…
Teşekkürler! Yazdığınız blog içeriğine de şöyle bir göz attım; gerçekten çok iyi hazırlanmış.
Fırsatınız olursa göz atın, hoşunuza gitmeyen ya da geliştirmek istediğiniz bir nokta varsa rahatça issue açabilir veya PR gönderebilirsiniz!
Paralel worktree yaklaşımını, work dirty -> clean nicely şeklinde düşünüyorum.
Bunun gelecekte başlıca geliştirme yöntemi olacağını da düşünüyorum.
Güzel bir repo gibi görünüyor.
Teşekkür ederim :) Aklımdaki noktaları çok iyi yazmışsınız.
worktree tabanlı olarak paralel çalışmayı zorunlu kılan yaklaşım etkileyici görünüyor.
Ben de birden fazla ticket’ı aynı anda ele alırken
her çalışma ortamını ayırmak için
tmux+ birden fazla branch kombinasyonuyla ilerliyorum amasonuçta durum yönetimi sürekli karışma sorununa yol açıyordu.
parsec gibi
start/ship/mergeile lifecycle’ı bağlamakaslında hataları azaltma yönünde daha iyi bir yaklaşım gibi duruyor.
Merak ettiğim bir nokta var:
birden fazla PR aynı anda açıkken merge sırası değişirse ya da
rebase gereken bir durumda stack sync nasıl çalışıyor?
İlginiz için teşekkürler!
stack sync, ebeveyn-çocuk ilişkisine göre topological order sırasıyla rebase işlemi yapar.Çalışma şekli
Kökten başlayıp BFS ile dolaşırken her çocuğu ebeveyn branch'inin üzerine rebase eden bir yapısı var.
maingüncellendiyse değişiklikler kökten başlayarak doğal şekilde yayılır.merge sırasının değiştiği durumlar
Şu anda stack'in alt kısmından (ebeveynlerden) başlayarak merge edilmesi varsayımıyla tasarlanmış durumda. Eğer ortadaki bir PR önce merge edilirse, o düğümün çocukları bir sonraki
stack syncsırasında ebeveyni bulamadığı için başarısız olur. Bu durumda base'i manuel olarak yeniden belirtmeniz gerekir.Çakışma oluştuğunda
Rebase sırasında çakışma çıkarsa yalnızca ilgili branch
rebase --abortile geri alınır ve kalanlar ilerlemeye devam eder. Hangi ticket'ın başarılı/başarısız olduğunu sonuç tablosunda gösterdiği için, yalnızca başarısız olanları manuel olarak çözmeniz yeterlidir.