Evan’ın Jujutsu eğitim serisi
(evmar.github.io)- Git kullanım deneyimi olanların basit ama güçlü sürüm kontrol sistemi Jujutsu(jj)’yi kısa ve öz biçimde öğrenebilmesi için hazırlanmış bir eğitimdir
- Öğrenmeye başlamadan önce Jujutsu’yu neden kullanmak isteyebileceğini merak eden okurlar için ayrı bir Jujutsu tanıtım yazısı sunulmaktadır
- Sohbet tarzı giriş metni, ayrıntılı resmî dokümantasyon ve sürüm kontrolüne yeni başlayanlara yönelik kaynaklar gibi okur seviyesine uygun alternatifler de yönlendirilmektedir
- Konu seçimi, çıkarımlar ve sıralamayı dikkatle belirlemek için Evan Martin tarafından bizzat yazılmıştır
- Ana metnin yazımında AI kullanılmamış, büyük kısmı tamamlandıktan sonra yalnızca hata kontrolü için AI’dan yararlanılmıştır
Hedef okur ve öğrenme yolu
- Jujutsu, basit ama güçlü bir sürüm kontrol sistemidir ve bu eğitimde bundan sonra jj olarak anılacaktır
- Git’e aşina okurlar için, özü hedefleyen kısa ve akıcı bir öğrenme akışı sunar
- Hemen başlamak isterseniz eğitime başla sayfasına gidebilir, önce neden kullanılması gerektiğini görmek isterseniz Jujutsu tanıtım yazısına bakabilirsiniz
Okura göre alternatif kaynaklar
- Bu eğitimin yaklaşımı size uymuyorsa, deneyim seviyenize ve tercihinize göre şu kaynakları seçebilirsiniz
- Steve's Jujutsu tutorial: En çok önerilen başlangıç kaynağıdır; sohbet tarzında yazılmıştır
- Jujutsu documentation: Başlangıçtan itibaren daha fazla ayrıntıya giren resmî bir eğitim sunar
- Jujutsu for Everyone: Daha önce sürüm kontrol deneyimi olmayan okurlar içindir
Doğrudan yazım ve AI kullanım kapsamı
- Tüm metin Evan Martin tarafından doğrudan yazılmıştır; neyin dahil edilip edilmeyeceği ve hangi sırayla yerleştirileceği dikkatle insan tarafından belirlenmiştir
- Ana metni oluşturmak için AI kullanılmamış, yalnızca büyük kısmı yazıldıktan sonra hataları kontrol etmek amacıyla kullanılmıştır
1 yorum
Lobste.rs görüşleri
Dürüst olmak gerekirse, itibarımı ortaya koyarak söyleyeyim:
jjyi yaklaşık bir hafta denedim ama sonunda Git’i doğrudan kullanmanın acısını azaltmak için bir LLM’den yardım istemeye başladım ve mevcut iş akışımın yerini yeterince doldurduğunu da hissetmedimNormalde sadece
git checkout,git add,git commit,git pushkullanıyorum; tanıtım yazılarında bahsedilen index, stash, çeşitli reset türleri, devam eden rebase’ler ve tutarsız undo sorunlarını da neredeyse hiç yaşamıyorum, ayrıca monorepo da pek kullanmıyorumJujutsu’nun asıl hedef kitlesinin kim olduğunu ve
jjyi ustaca kullanacak seviyeye gelmenin ne kadar sürdüğünü merak ediyorum; bir dahaki sefere en azından o kadar süre ayırmak isterimBen de Git’te temel işler dışında şeylerden kaçınan biriyim; stash yapıp branch değiştirmek yerine depoyu başka bir konuma yeniden klonladım ve ilgili değişiklikleri seçerek commit etmek yerine
git add --allile her şeyi commit ettim ya da editörde değişiklikleri geri alıp commit ettikten sonra yeniden uyguladımİş yerinde 7 yıl Mercurial kullandığım için
jjye alışmayı kolaylaştıran bir geçmişim vardı, ama artık commit yeniden düzenleme ve birden çok değişikliği yönetme çok kolay olduğu için eskiden içgüdüsel olarak dolaşacağım karmaşık işleri de aktif olarak yapmaya başladımDoğrusal biçimde geliştirilen kodu ara sıra snapshot olarak kaydetmekten ibaretse, o komutlar yeterlidir ve tam teşekküllü bir VCS bile fazla gelebilir; Dropbox bile yetebilir
Benim için VCS, kodu ve onun katmanlarını nasıl düşündüğünü gösteren bir anlatı kurma aracı; birincil okur ekip arkadaşlarım, ikincil okur ise 10 yıl sonraki ben.
jj, bunu çok daha az sürtünmeyle yapmayı sağlıyorTerimlerin ve özelliklerin temelini oturtmak için birkaç kılavuzu baştan sona okudum ve kişisel projelerde birkaç gün düzenli kullandıktan sonra temel işlerde epey akıcı hale geldim; VCS’ye bakışım da değişti
Refactoring ya da büyük bir özellik geliştirirken önce nihai hedefe kadar her şeyi uygular, ardından incelemesi kolay ve her birinin gerekçesi net olacak şekilde “tüm eslint uyarılarını düzelt”, “fonksiyonu dışa açmak için refactoring”, “çağrı noktası A’yı yeni fonksiyona geçir”, “yeni özellik ekle” gibi küçük değişikliklere bölerim.
jj splitbunun için mükemmel; sırf bu özellik bilejjkullanmak için yeterli bir nedenBuna karşılık
git stash, birden fazla stash’i yönetmeyi zorlaştırıyor ve çakışma olduğunda kaydedilmiş kodu kaybetmeye kadar giden tehlikeli kullanılabilirlik tuzakları barındırıyor. Alttaki bir commit’e PR geri bildirimini yansıtıp sonra üstteki commit’leri veya PR’leri rebase etmek de, özellikle stack PR’lerde, ilerleme göstergesi olmaması ve ortada durup yeniden yığmanın zor olması nedeniyle neredeyse kâbus gibi. Bu yüzden stack PR yönetimi için hâlâ Graphite kullanıyorumjjde elde ettiğim en büyük fayda, rebase ele alış biçimiOrganik kimya alanında yüksek lisans yapan bir öğrenci, makale çalışması için açtığı branch’i 4 yıl boyunca merge veya rebase yapmadan geliştirmişti; branch
mainin binlerce commit gerisine düşmüştü ve tez savunması öncesi merge etmesi gerekiyordu. Neredeyse her commit’te çakışma çıktığı için Git ile bu iş 1-2 hafta sürüyordu; üçüncü gün acil bir bug gelirse rebase’i durdurup bug’ı düzeltmek, sonra en baştan yeniden başlamak gerekiyordu ve 3 hafta sonra iş bittiğinde de güncelmaine uydurmak için tekrar rebase gerekiyordujjde ise merge çakışmaları birinci sınıf nesneler olduğu için müsait olduğunda çözebiliyorsun; süreç sırasında yeni bir commit’e geçip acil bug’ı düzeltsen bile ilerlemeyi kaybetmiyorsun. Git’te bir hafta sürecek bir rebase’i bir günde bitirebildim ve bir keresinde birleştirildiğinde aslında hiçbir değişiklik oluşturmayan art arda 200 commit’i tespit edip on binlerce satırlık çakışmayı iki gün boyunca çözmek yerine bir dakikadan kısa sürede tümünü attım. Rebase sırasında bilemaini güncelleyip üzerinde çalıştığın branch’i en güncelmainin üzerine taşıyabiliyorsunGit’e fazlasıyla alışkın olup ara sıra komut bakma düzeyinde olan benim için bile bu yazı, ilk kez ilgi çekici gelen bir Jujutsu tanıtım yazısı
Önceki yazılar genelde “berbat Git komut satırı arayüzünden kurtulabilirsiniz” diye başlıyordu; Git’in tuhaf yönlerini ve başkalarının yaşadığı zorlukları anlasam da bu ifade yüzünden Jujutsu’yu aşk romanları ya da beef vindaloo gibi benimle ilgisiz bir şey olarak görüyordum
jjnin keyfini anlatmanın zor olmasının nedeni, tüm VCS’lerde doğal olarak bulunduğunu sandığım örtük özelliklerin aslında öyle olmaması ve atomik işlemlerin çok daha basit olmasıİyi bir tanıtım cümlesi bulmak zor olduğu için sonunda açıklamanın tamamını “Git değil” sözü kaplıyor; ben de bunu doğru düzgün açıklayamayan taraftayım
Diğer Git GUI’lerinin aksine gerçek Git komutlarını olabildiğince olduğu gibi izliyor, sadece karmaşık sözdizimini menü ve düğmelere dönüştürüyor; ayrıca her işlemin karşılık geldiği komutu da gizlemeyip durum çubuğuna kaydediyor. Bir gün Sublime JJ çıkarsa anında geçerim
jjyi deneme isteği veren ifade, her zaman etkileşimli rebase durumunda olan Git olmuştu