1 poin oleh GN⁺ 12 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Tutorial ini disusun agar pengguna yang sudah berpengalaman dengan Git dapat mempelajari Jujutsu(jj), sistem kontrol versi yang sederhana sekaligus kuat, secara ringkas
  • Untuk pembaca yang ingin tahu alasan menggunakan Jujutsu sebelum mulai belajar, tersedia artikel terpisah pengantar Jujutsu
  • Juga disediakan alternatif sesuai tingkat pembaca, seperti panduan pemula bergaya percakapan, dokumentasi resmi yang lebih mendetail, dan materi untuk pemula kontrol versi
  • Evan Martin menulisnya sendiri agar dapat menentukan dengan cermat pemilihan dan penghilangan topik, serta urutan penyajiannya
  • AI tidak digunakan untuk menulis isi utama; setelah sebagian besar selesai, AI hanya dimanfaatkan untuk memeriksa kesalahan

Target pembaca dan alur belajar

  • Jujutsu adalah sistem kontrol versi yang sederhana sekaligus kuat, dan dalam tutorial ini selanjutnya ditulis sebagai jj
  • Ditujukan untuk pembaca yang sudah terbiasa dengan Git, dengan alur belajar ringkas yang berfokus pada inti
  • Jika ingin langsung belajar, Anda dapat membuka mulai tutorial, sedangkan jika ingin memahami alasan pengenalannya terlebih dahulu, lihat artikel pengantar Jujutsu

Materi alternatif berdasarkan pembaca

  • Jika pendekatan tutorial ini tidak cocok, Anda dapat memilih materi berikut sesuai tingkat pengalaman dan preferensi

Penulisan langsung dan cakupan penggunaan AI

  • Seluruh teks ditulis langsung oleh Evan Martin, dengan keputusan manusia yang cermat tentang apa yang disertakan atau dihilangkan serta urutan penyajiannya
  • AI tidak digunakan untuk membuat isi utama, dan hanya dimanfaatkan untuk memeriksa kesalahan setelah sebagian besar teks selesai ditulis

1 komentar

 
GN⁺ 12 jam lalu
Komentar di Lobste.rs
  • Terus terang, dengan mempertaruhkan reputasi saya, saya sudah mencoba jj sekitar seminggu, tetapi pada akhirnya saya malah meminta bantuan LLM untuk mengurangi rasa sakit berurusan langsung dengan Git, dan saya juga tidak merasa itu cukup menggantikan alur kerja yang ada
    Biasanya saya hanya memakai git checkout, git add, git commit, dan git push, dan hampir tidak pernah mengalami masalah indeks, stash, berbagai jenis reset, rebase yang sedang berjalan, atau undo yang tidak konsisten seperti yang disebutkan dalam tulisan promosi; saya juga jarang memakai monorepo
    Saya penasaran siapa target utama Jujutsu, dan berapa lama waktu yang dibutuhkan sampai mahir memakai jj; lain kali saya ingin berinvestasi setidaknya selama itu

    • Saya penasaran, secara spesifik tugas apa yang Anda minta LLM bantu
      Saya juga cenderung menghindari hal-hal di luar operasi dasar di Git, jadi alih-alih melakukan stash lalu mengganti branch, saya meng-clone ulang repositori ke lokasi lain; dan alih-alih memilih hanya perubahan terkait untuk di-commit, saya meng-commit semuanya dengan git add --all, atau membatalkan perubahan di editor, lalu commit, lalu menerapkannya lagi
      Di tempat kerja saya memakai Mercurial selama 7 tahun, jadi punya latar belakang yang memudahkan adaptasi ke jj, tetapi sekarang memindahkan commit dan mengelola banyak perubahan menjadi sederhana, sehingga saya jadi aktif melakukan pekerjaan kompleks yang dulu secara naluriah akan saya hindari
    • Perspektifnya berbeda tergantung untuk apa Anda memakai version control system (VCS)
      Kalau sekadar sesekali menyimpan snapshot kode yang dikembangkan secara linear, perintah-perintah itu sudah cukup, dan VCS lengkap mungkin berlebihan—Dropbox saja bisa jadi cukup
      Bagi saya, VCS adalah alat untuk membangun narasi yang menunjukkan bagaimana saya memikirkan kode dan hierarkinya; pembaca utamanya adalah rekan kerja, dan pembaca sekundernya adalah saya 10 tahun lagi. jj membuat hal ini jauh lebih mudah ditangani tanpa gesekan
    • Tidak apa-apa meminta bantuan LLM; saya juga begitu sampai mempelajari perintah-perintah dasar yang saya butuhkan
      Saya membaca beberapa panduan dari awal sampai akhir untuk memahami dasar istilah dan fiturnya, lalu menggunakannya secara konsisten selama beberapa hari di proyek pribadi; setelah itu saya menjadi cukup mahir untuk pekerjaan dasar, dan cara saya memandang VCS juga berubah
      Saat melakukan refactoring atau mengembangkan fitur besar, saya biasanya terlebih dahulu mengimplementasikan sampai tujuan akhir, lalu membaginya menjadi perubahan kecil seperti “memperbaiki semua peringatan eslint”, “refactoring untuk mengekspos fungsi”, “mengalihkan call site A ke fungsi baru”, dan “menambahkan fitur baru”, supaya mudah ditinjau dan alasan tiap perubahan jelas. jj split sempurna untuk pekerjaan ini, dan satu fitur ini saja sudah cukup menjadi alasan memakai jj
      Sebaliknya, git stash sulit dipakai saat ada banyak stash, dan punya banyak jebakan usability berbahaya yang bisa membuat kode yang disimpan hilang saat terjadi konflik. Menerapkan feedback PR ke commit yang lebih bawah lalu me-rebase commit atau PR di atasnya juga, terutama pada stacked PR, nyaris seperti mimpi buruk karena tidak ada indikator progres dan sulit berhenti di tengah atau menyusunnya kembali. Karena itu, untuk mengelola stacked PR saya masih memakai Graphite
    • Manfaat terbesar yang saya dapat dari jj adalah cara menangani rebase
      Seorang mahasiswa pascasarjana jurusan kimia organik mengembangkan branch untuk pekerjaan paper selama 4 tahun tanpa merge atau rebase, sehingga tertinggal ribuan commit dari main, dan harus menggabungkannya menjelang sidang gelar. Karena konflik muncul di hampir setiap commit, dengan Git ini akan memakan 1–2 minggu; jika pada hari ketiga ada bug mendesak, ia harus menghentikan rebase, memperbaiki bug, lalu mulai lagi dari awal; dan ketika selesai 3 minggu kemudian, ia harus rebase lagi agar sesuai dengan main terbaru
      Di jj, konflik merge adalah objek kelas satu, jadi bisa diselesaikan saat ada waktu luang, dan walau di tengah jalan pindah ke commit baru untuk memperbaiki bug mendesak, progres tidak hilang. Rebase yang di Git akan memakan waktu seminggu bisa diselesaikan dalam sehari, dan suatu kali saya menemukan 200 commit berurutan yang jika digabungkan tidak menghasilkan perubahan apa pun, sehingga pekerjaan dua hari menangani puluhan ribu baris konflik bisa saya buang seluruhnya dalam kurang dari satu menit. Bahkan saat rebase, Anda bisa memperbarui main dan memindahkan branch yang sedang dikerjakan ke atas main terbaru
  • Bagi saya yang sudah terlalu terbiasa dengan Git sampai hanya sesekali perlu mencari perintah, tulisan ini adalah pengantar Jujutsu pertama yang terasa menarik
    Tulisan-tulisan sebelumnya biasanya dimulai dengan “Anda bisa lepas dari antarmuka command line Git yang mengerikan”; meski saya memahami keanehan Git dan kesulitan orang lain, ungkapan semacam itu membuat saya menganggap Jujutsu tidak relevan bagi saya, seperti novel roman atau beef vindaloo

    • Alasan sulit menjelaskan kesenangan memakai jj adalah karena karakteristik implisit yang kita kira pasti ada di semua VCS ternyata sebenarnya tidak demikian, dan operasi atomiknya jauh lebih sederhana
      Karena sulit membuat kalimat promosi yang bagus, pada akhirnya frasa “ini bukan Git” mengambil alih seluruh penjelasan; saya sendiri juga tidak pandai menjelaskannya
    • Di Git, jika memakai GUI Sublime Merge dan beberapa perintah kustom, hampir semua masalah yang disebutkan di sini bisa diselesaikan
      Tidak seperti GUI Git lain, ia mengikuti perintah Git nyata sebisa mungkin, hanya mengganti sintaks yang sulit dengan menu dan tombol, serta tidak menyembunyikan perintah yang terkait dengan tiap aksi, melainkan mencatatnya di status bar. Kalau Sublime JJ keluar, saya akan langsung pindah
    • Ungkapan yang membuat saya ingin mencoba jj adalah Git yang selalu berada dalam kondisi rebase interaktif