- jj adalah sistem kontrol versi yang kompatibel dengan Git dan menganjurkan branch anonim, tetapi untuk melakukan push ke repositori Git diperlukan bookmark, yaitu nama branch Git
jj git push --change xyz bawaan membuat branch push-xyz; ini berpusat pada change ID sehingga terasa alami di CLI, tetapi di daftar GitHub sulit membayangkan isi pekerjaannya
- Dengan mengubah template
git_push_bookmark, baris pertama deskripsi bisa diubah menjadi slug singkat memakai slugify(), lalu ditambahkan change ID pendek di belakangnya
jj git push --change ozkspkuyzpwu akan membuat add-note-about-jj-bookmark-templates/ozkspkuyzpwu, sehingga tetap mudah dibaca sekaligus mempertahankan keterkaitan revisi
- Di repositori bersama, namespace seperti
ddbeck/ bisa ditambahkan di depan, tetapi aturan nama branch Git cukup rumit sehingga jika tidak valid perlu membuat bookmark manual
Memperbaiki nama branch untuk Git push di jj
jj (Jujutsu) adalah sistem kontrol versi yang kompatibel dengan Git, dan karena beberapa alasan mengharapkan sekaligus menganjurkan penggunaan branch anonim
- Saat melakukan push ke repositori Git, branch anonim pun memerlukan nama; di
jj ini disebut bookmark, sedangkan di Git disebut branch
jj git push --change xyz akan melakukan push revisi dengan ID xyz ke branch Git push-xyz
- Nilai bawaan ini terasa alami karena menekankan change ID yang sering ditampilkan dan digunakan oleh CLI
jj, tetapi di daftar branch pada situs GitHub sulit mengingat pekerjaan apa yang dimaksud hanya dari push-xyz
Cara mengubah konfigurasi
- Buat template alias
slugify() baru, lalu ubah template git_push_bookmark agar menggunakannya
[template-aliases]
"slugify(str)" = '''
truncate_end(
65,
str.first_line()
.replace(regex:'[^[[:alnum:]].]', '-')
.replace(regex:'-{2,}', '-')
.replace(regex:'\.{2,}', '.')
.replace(regex:'(^-+|-+$)', '')
.lower()
)
'''
[templates]
git_push_bookmark = 'slugify(description) ++ "/" ++ change_id.short()'
slugify() menggunakan baris pertama dari deskripsi perubahan untuk membuat nama pendek berbentuk slug, lalu menambahkan change ID pendek di bagian akhir
- Sebagai contoh, saat menjalankan
jj git push --change ozkspkuyzpwu, akan dibuat add-note-about-jj-bookmark-templates/ozkspkuyzpwu
- Nama ini lebih mudah dibaca sambil tetap mempertahankan hubungan dengan revision ID yang ditampilkan di CLI
jj
- Jika melakukan push ke repositori yang dibagikan dengan orang lain, template bisa diubah agar branch Anda ditempatkan di bawah namespace terpisah
[templates]
git_push_bookmark = '"ddbeck/" ++ slugify(description) ++ "/" ++ change_id.short()'
- Tidak ada jaminan bahwa nama branch Git akan selalu aman
- Aturan nama branch Git yang valid cukup rumit; jika template menghasilkan nama yang tidak valid, akan muncul error dan Anda harus membuat bookmark secara manual
1 komentar
Komentar Lobste.rs
Saya cukup sering memakai pendekatan menaruh dan memanfaatkan metadata di pesan commit
Pertama, buat alias
trailer_v(key)untuk dengan mudah mengambil nilai trailer dari deskripsi commit, lalu di skrip pushnushellsusun label branch berbentukticket/topicdenganjj logMisalnya jika di pesan commit ada
ticket:TKT-123dantopic:stop-crashing, skrip yang melakukan push ke GitHub dan membuka halaman"Create PR"akan mengambil nilai itu dan memakainyaGit trailers bagus karena menjadi penyimpanan key-value yang konsisten di dalam deskripsi, tetapi saat ini agak merepotkan untuk diambil dan dipakai dari bahasa
revsetMembuat slug nama branch berdasarkan pesan commit atau isi perubahan terasa seperti area yang mudah ditangani oleh LLM lokal
Anggota tim saya sudah beberapa kali menanyakan nama branch yang dibuat otomatis oleh
jjSaya berpikir untuk mencoba variasi cara ini untuk branch commit sekali pakai
Menurut saya, nama branch berbasis change-id itu sudah sempurna. Saya tidak merasa perlu mengubahnya
Itu cuma nama branch yang diminta oleh alat code review yang mengerikan, bukan judul
Mungkin ini juga bisa diselesaikan dengan alat yang mengotomatiskan pembuatan PR, tetapi saya suka pendekatan ini karena sederhana