1 puan yazan GN⁺ 11 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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

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 hissetmedim
    Normalde sadece git checkout, git add, git commit, git push kullanı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ıyorum
    Jujutsu’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 isterim

    • LLM’den özellikle hangi işlerde yardım istediğini merak ediyorum
      Ben 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 --all ile 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ım
    • Sürüm kontrol sistemi (VCS) kullanma amacına göre bakış açısı değişir
      Doğ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ıyor
    • LLM’den yardım istemekte sorun yok; ben de gerekli temel komutları öğrenene kadar öyle yaptım
      Terimlerin 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 split bunun için mükemmel; sırf bu özellik bile jj kullanmak için yeterli bir neden
      Buna 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ıyorum
    • jjde elde ettiğim en büyük fayda, rebase ele alış biçimi
      Organik 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üncel maine uydurmak için tekrar rebase gerekiyordu
      jjde 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 bile maini güncelleyip üzerinde çalıştığın branch’i en güncel mainin üzerine taşıyabiliyorsun
  • Git’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
    • Git’te Sublime Merge GUI’si ve birkaç özel komut kullanırsan burada anlatılan sorunların neredeyse hepsini çözebilirsin
      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
    • Bana jjyi deneme isteği veren ifade, her zaman etkileşimli rebase durumunda olan Git olmuştu