1 poin oleh GN⁺ 5 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Kesalahan kecil mengetik perintah jj berulang kali memang berujung pada error subcommand, tetapi bisa diserap dengan alias konfigurasi jj
  • Contohnya adalah situasi ketika jj jj show -T 'change_id.short()', yang dimaksudkan untuk mendapatkan ID pendek changeset yang sedang diedit, gagal
  • Seperti git, jj dapat mendefinisikan alias di file konfigurasi, sehingga dengan jj util exec sisa perintah dapat diteruskan kembali ke jj
  • Alias sederhana menafsirkan -T bukan sebagai milik target eksekusi, melainkan seperti opsi untuk jj util exec, jadi parsing argumen harus dihentikan dengan --
  • Dengan konfigurasi akhir jj = ["util", "exec", "--", "jj"], bukan hanya jj jj show, tetapi juga jj jj jj... show yang ditumpuk berkali-kali akan mencetak ID changeset yang sama

jj yang diketik berulang gagal karena error subcommand

  • Saat menggunakan jj, jika Anda mengetik satu jj lagi di command line, jj kedua ditafsirkan sebagai subcommand dan gagal
    • Contohnya adalah perintah untuk mengambil ID pendek dari changeset yang sedang diedit
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
  • Ini juga bisa diakali dengan alias shell, tetapi Anda dapat memakai alias pada konfigurasi jj sendiri
    • Untuk mengedit konfigurasi, Anda dapat menggunakan jj config edit
    • Untuk mengubah konfigurasi dari shell, Anda dapat menggunakan jj config set

Mengunci penerusan argumen dengan -- di jj util exec

  • Percobaan pertama adalah menjalankan kembali jj lewat jj util exec dari alias
[aliases]


# jj all the way down
jj = ["util", "exec", "jj"]
  • Dengan konfigurasi ini, -T ditafsirkan bukan sebagai milik target eksekusi jj, melainkan seperti opsi untuk jj util exec, sehingga gagal
$ jj jj show -T 'change_id.short()'
error: unexpected argument '-T' found
tip: to pass '-T' as a value, use '-- -T'
Usage: jj util exec [OPTIONS] <COMMAND> [ARGS]...
For more information, try '--help'.
  • Jika menambahkan --, parsing opsi setelahnya dapat dihentikan dan argumen yang tersisa diteruskan apa adanya ke target eksekusi
[aliases]


# jj all the way down
jj = ["util", "exec", "--", "jj"]
  • Setelah konfigurasi akhir, jj show biasa, jj jj show yang ditumpuk, dan jj jj jj ... show yang diulang lebih banyak semuanya mencetak ID changeset pendek yang sama
$ jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx

1 komentar

 
GN⁺ 5 jam lalu
Opini Lobste.rs
  • Sebelumnya juga pernah ada git git git git git

  • Ini juga bisa dilakukan dengan cara yang lebih sederhana:

    [aliases]  
    jj = []  
    

    Satu-satunya kekurangan bentuk ini, kalau ingatan saya benar, adalah saat dijalankan tanpa argumen lain seperti jj jj, ia tidak menjalankan perintah default seperti jj

    • Kalau begitu, bukankah cara yang lebih sederhana itu sebenarnya tidak melakukan hal yang sama?
  • Wah, hampir setahun lalu (28/09/25) saya pernah memposting solusi yang sama di JJ Discord
    Agar salah ketik jj jj ... berperilaku seperti jj ..., sebenarnya ini yang dibutuhkan:

    [aliases]  
    jj = ["util", "exec", "--", "jj"]  
    

    Sejujurnya saya cukup suka cara ini

  • Apakah ini referensi ke bunny party?

  • Saya juga menambahkannya ke gist konfigurasi jj yang saya kelola: https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c

  • Tetap saja, saya ingin melihat versi ringkas sepanjang tweet yang menjelaskan apa itu Jujutsu dan mengapa harus memakainya, seolah menjelaskannya kepada anak 5 tahun
    Di tempat kerja sebelumnya saya memakai Git setiap hari selama 4 tahun, dan saya benar-benar membencinya. Untuk kebutuhan kami dan sebagian besar cara penggunaannya, Git terasa luar biasa terlalu rumit, dan bagi kebanyakan orang ia bukan sistem version control terdistribusi, melainkan alat terpusat berbasis server yang berpusat pada Github
    Lucu juga bahwa banyak pengguna Git tidak tahu bahwa git dalam bahasa Inggris Britania juga berarti “orang yang pemarah, tidak kooperatif, dan tidak membantu”. Itu menggambarkan Git sebagai alat dengan baik
    Namun saya belum pernah memakai sistem version control lain, jadi saya lemah dalam membandingkan. Jujutsu juga sulit dicari di Google, dan dokumentasinya tampaknya lebih ditujukan untuk pengguna version control yang lebih mahir daripada orang seperti saya

    • Menurut saya Torvalds memilih git memang karena artinya orang yang kasar dan pemarah