· kaynak dev.to (home feed)
gitsmith, GitLab ve GitHub inceleme ile CI iş akışlarını tek terminal arayüzünde birleştiriyor
gitsmith adlı açık kaynak bir Rust terminal arayüzü, glab ve gh CLI'larını sararak GitLab ve GitHub için issue'ları, MR/PR incelemelerini, diff'leri ve canlı CI loglarını tek bir klavye odaklı ekrana taşıyor.

gitsmith adlı yeni bir açık kaynak proje, bir deposunun GitLab'da mı yoksa GitHub'da mı bulunduğuna bakılmaksızın, merge request'leri kontrol etme, diff okuma ve CI pipeline'larını izleme günlük rutinini tek bir terminal ekranında toplamayı hedefliyor. Aracın geliştiricisinin dev.to'daki bir yazısına göre gitsmith, formların API'lerine kendi kimlik bilgileriyle konuşmak yerine resmî glab ve gh komut satırı istemcilerini sarıyor.
İki forge üzerinde tek arayüz
gitsmith'i bir git deposu içinde çalıştırdığınızda, yazıya göre uzak depoyu inceleyerek oturumu glab mı yoksa gh'nin mi yöneteceğine karar veriyor. Depo dışında başlatıldığında hangi forge'un kullanılacağını soruyor, projelerinizi listeliyor ve sizi içine bırakıyor. Ana görünüm Issues, MR/PR, Pipelines, Runners, Releases, Tags, Branches, Commits, Todos, Milestones ve Members'ı kapsayan on bir sekmeye ayrılmış. Sekme çubuğu yeniden sıralanabilir ve tek tek sekmeler gizlenebilir.
Durum yönetimi de var: kapatılmış issue'lar açık olanların altında göründüğünden bir öğe tarayıcı açılmadan yeniden açılabiliyor ve korumalı dallar diğerlerinin üzerinde gruplanıyor.
Diff görüntüleme ve pipeline detayına inme
Yazara göre yan yana diff görüntüleyici en çok geliştirme emeği alan bölüm olmuş. syntect üzerine inşa edilen görüntüleyici, satır numaralı, kayarken sabit kalan bir dosya başlıklı ve kaydırmanızı takip eden bir dosya listeli sözdizimi vurgulu karşılaştırmalar sunuyor. Bir merge request üzerinde v'ye veya bir commit üzerinde Enter'a basmak görüntüleyiciyi açıyor ve köşeli parantez tuşları dosyalar arasında geçiş yapıyor.
Pipeline'lar kendi hiyerarşisine sahip. Bir pipeline'a girmek işlerini listeliyor; bir işe girmek en yeni çıktıyı takip eden bir log görünümü sunuyor. Önem derecesi renklendiriliyor: ERROR satırları kırmızı, WARN satırları sarı, zaman damgaları soluk gösteriliyor ve CI sisteminin kendi ANSI renkleri değiştirilmeden geçiriliyor. Bridge işleri, tetikledikleri downstream pipeline'lara doğrudan götürüyor.
Onay adımlarıyla yazma işlemleri
gitsmith salt okunur değil. Yazıda şunlar sıralanıyor: merge ve pull request'leri onaylama, birleştirme ve kapatma; issue'ları kapatma, yeniden açma ve yorum gövdesini $EDITOR'da yazarak yorumlama; pipeline'ları ve tek tek işleri yeniden deneme veya iptal etme; yeni MR/PR, issue, pipeline ve tag oluşturma; rol seçici üzerinden üye ekleme. Yıkıcı her eylem bir evet/hayır onay istemi arkasında duruyor.
Yönetilecek yeni kimlik bilgisi yok
Araç glab ve gh'ye komut satırından çağrılar yaptığı için bu CLI'ların halihazırda sahip olduğu kimlik doğrulamasını devralıyor; dolayısıyla yapılandırılacak token veya OAuth akışı yok. Yapılandırılmış host'ları keşfetmek için gitsmith, glab'ın config.yml'sini ve gh'nin hosts.yml'sini okuyor; $GLAB_CONFIG_DIR, $XDG_CONFIG_HOME, ~/.config ve platforma özgü konumları denetliyor. Yazar yalnızca host adlarının okunduğunu ve bu dosyalardaki token'lara asla dokunulmadığını vurguluyor. Bir tuş vuruşu, yeniden başlatma olmadan GitLab ile GitHub arasında veya self-hosted örnekler arasında geçiş yapıyor; başka bir tuş vuruşu mevcut host'taki depolarınız arasında fuzzy arama başlatıyor.
Uygulama ve kurulum
gitsmith Rust ile yazıldı; odaklanmış az sayıda modül üzerinden kabaca 10.500 satır. Arayüz ratatui üzerine kurulu, sözdizimi vurgulamayı ise saf Rust regex arka ucunu kullanan syntect üstleniyor; bu da cargo install'un C araç zinciri gerektirmediği anlamına geliyor. Listeler sayfa başına 100 satır çekiyor ve arka planda 500 satıra kadar veri çekmeye devam ediyor; böylece varsayılan API yanıtlarının 20-30 satırlık sınırları aşılmış oluyor. Gruvbox ve Dracula'dan Tokyo Night ve Everforest'e kadar dokuz yerleşik tema, canlı önizlemeyle gezilebiliyor.
Kurulum seçenekleri arasında macOS veya Linux için önceden derlenmiş bir ikili dosya indiren curl tabanlı bir shell script (belirli bir sürüm sabitlenebiliyor; README'nin örneği v0.2.2 kullanıyor), standart cargo install gitsmith --locked yolu veya kaynaktan derleme var. Ön koşullar yalnızca GitLab işleri için kimlik doğrulaması yapılmış bir glab ve/veya GitHub işleri için kimlik doğrulaması yapılmış bir gh. Proje MIT lisanslı ve yazar katkı, hata bildirimi ve özellik fikirlerini davet ediyor.
Neden önemli
Birçok geliştirici iki forge'u da kullanıyor ve tekine sadık kalanlar bile günlerini bir web arayüzü, bir CLI ve bir editör arasında gezinerek geçiriyor; her geçiş bağlam kaybettiriyor. Kendi entegrasyon katmanını kurmak yerine glab ve gh'nin kimlik doğrulamasını ve API erişimini yeniden kullanan gitsmith, kurulum maliyetini neredeyse sıfırda tutarken genellikle sizi tarayıcıya çeken diff okuma ve canlı log takibini sunuyor. CI yoğun ekipler için, iş loglarını düzeltilen kodla aynı terminalde tutmak sessiz ama gerçek bir kazanım. Genç, tek yazarlı bir proje olarak olgunlaşması için topluluk desteğine ihtiyacı olacak; ancak kapsamı — inceleme, issue'lar ve pipeline'lar tek bir klavye öncelikli yüzeyde — gerçek bir günlük acı noktasını hedefliyor.
- #open-source
- #terminal
- #developer-tools
- #rust
- #git