jj v0.43.0 Dirilis
(github.com/jj-vcs)- Sistem kontrol versi kompatibel Git jj v0.43.0 menambahkan
jj run, yang memungkinkan menjalankan perintah pada beberapa changeset sehingga pekerjaan verifikasi dan perbaikan berulang bisa diotomatisasi lebih jauh jj runmenggunakan working copy khusus untuk tiap changeset, serta turut menyebarkan perubahan dan konflik dari perintah yang memodifikasi working copy seperticargo checkataucargo fix- Rilis ini mencakup perubahan yang memengaruhi pengaturan lama dan cara penggunaan revset yang sudah ada, seperti
git_head(),git_refs(), resolusi simbol bergaya Git, serta penghapusanui.revsets-use-glob-by-default jj show --reversed, pencarian konfigurasi/etc/jj,jj config gc,jj gerrit upload -o, fungsi revsetforks(), dan gaya warna coret juga ditambahkan- Perbaikan mencakup penanganan file identity di Windows, snapshot working copy immutable, peringatan URL remote duplikat, serta masalah kerusakan loose Git object pada Intel Raptor Lake dan aarch64
Ikhtisar rilis
- jj adalah sistem kontrol versi kompatibel Git yang sederhana namun kuat
- Pada v0.43.0,
jj runbaru ditambahkan untuk menerapkan perintah ke beberapa changeset - Panduan instalasi untuk memulai dapat dilihat di installation instructions
Menjalankan perintah per changeset: jj run
jj rundapat menjalankan perintah yang sama pada beberapa changeset- Setiap changeset menggunakan working copy khusus yang terpisah satu sama lain
- Perintah yang dijalankan dapat memperbarui working copy, dan perubahan serta konflik yang dihasilkan akan disebarkan dengan semestinya
- Contoh penggunaan:
jj run -- cargo check --all-featuresjj run -- cargo fix
Penghapusan yang memengaruhi kompatibilitas
- Fungsi
git_head()dangit_refs()yang sudah usang kini dihapus dari revset dan template - Simbol bergaya Git seperti
refs/heads/maintidak lagi diinterpretasikan sebagai revisi- Sebagai gantinya, gunakan sintaks
<name>atau<name>@<remote>untuk bookmark/tag
- Sebagai gantinya, gunakan sintaks
- Opsi
ui.revsets-use-glob-by-defaultyang sudah usang juga telah dihapus jj bookmark trackdanuntracktidak lagi mendukung pola<kind>:<bookmark>@<remote>- Sintaks simbol
<bookmark>@<remote>tetap didukung - Isu terkait: #9226
- Sintaks simbol
Fitur baru
jj showkini mendukung flag--reversedjjkini juga mencari file konfigurasi di/etc/jjjj config gcmembersihkan konfigurasi repositori yang telah dihapus atau dipindahkan dari folder~/.config/jj/repos- Isu terkait: #9362
jj gerrit uploadkini mendukung flag-o/--option, mirip dengangit push -oatau--push-optionjj git fetchme-rebase revisi turunan dari revisi yang ditulis ulang berdasarkan change ID- Sebelumnya, ketika ada beberapa revisi dalam stack yang memiliki bookmark, revisi yang ditulis ulang dan revisi turunannya tidak selalu di-rebase
- Revisi turunan immutable tidak akan di-rebase
- Fungsi revset
forks()ditambahkan- Mengembalikan semua commit yang memiliki 2 anak atau lebih
- Pengaturan
colorskini mendukung gaya teks coret dengan{ crossed-out = true }
Masalah yang diperbaiki
- Di Windows, saat mengambil file identity dari path, symbolic link kini tidak lagi diikuti
- Diselaraskan dengan perilaku Unix
- Sebelumnya, dua symbolic link yang menunjuk ke target yang sama diperlakukan sebagai file yang sama
- Pemeriksaan identity ini digunakan untuk mendeteksi alias dari direktori
.gitdan.jjyang dicadangkan saat menulis working copy - Isu terkait: #8924
- Saat working copy berada dalam keadaan immutable,
jjkini membuat revisi working-copy baru selama proses snapshot jj git remote addkini memberi peringatan jika fetch URL atau effective push URL dari remote baru persis sama dengan remote yang sudah ada- Isu terkait: #413
- Masalah loose Git object yang rusak pada CPU Intel Raptor Lake dan aarch64 telah diperbaiki
- Sebelumnya,
jjbisa melaporkan commit berhasil, tetapigit fsckkemudian dapat gagal denganincorrect data check,corrupt loose object, ataumissing blob - Operasi
jjsetelahnya juga bisa gagal dengancorrupt deflate stream
- Sebelumnya,
1 komentar
Komentar di Lobste.rs
Sangat menantikan
jj runSenang karena penghentian dukungan dibatalkan untuk
jj bookmark track/untrack <name>@<remote>Selalu terasa kurang enak harus mengetik
--remotesetiap kaliBagian tentang perbaikan objek loose Git yang rusak pada
Intel Raptor Lake CPUdanaarch64terdengar seperti bug yang menarikKalau ada tulisan blog terkait, saya ingin membacanya 😃
Sampai sekarang saya mengira semua objek Git rusak yang pernah saya lihat disebabkan oleh rollback filesystem
Setelah hard shutdown, rollback f2fs sering menghasilkan kondisi disk yang cukup menarik, jadi sangat menarik mengetahui bahwa memang ada bagian yang rusak di sisi itu
Penasaran bagaimana
jj runberbeda darijj fixDi contoh changelog juga
jj rundipakai untuk menjalankancargo fix, jadi keduanya jelas terlihat tumpang tindihjj runmembuat seluruh working copy lalu menjalankan perintah di dalamnyajj fixmem-pipe isi satu file ke sebuah perintah, lalu menjadikan output-nya sebagai isi baru file tersebutJika sebuah tool cocok dengan
jj fix, biasanya seperti formatter atau linter, itu jauh lebih cepat, tetapijj runlebih fleksibelrunmenjalankan perintah untuk tiap perubahan, sedangkanfixmenjalankan filter pada tiap file yang berubahDalam kasus saya, saya akan memakai
rununtuk menjalankan test suite guna memastikan tiap commit valid, lalu memakaifixuntuk menjalankan formatter pada fileSaya belum memperbarui, jadi ini hanya interpretasi saya
Saya mungkin akan sedikit mencoba
jj run, tetapi karena cara saya memakai direnv, besar kemungkinan ini akan jadi lebih merepotkan dari yang diperlukan