Rilis jj v0.42.0 - Sistem kontrol versi yang kompatibel dengan Git
(github.com/jj-vcs)- Beralih ke allocator memori mimalloc untuk meningkatkan performa multithread
- Menghapus opsi perintah yang akan dihentikan seperti
jj commit --reset-author/--author,jj describe --no-edit/--edit/--reset-author/--author - Menghapus opsi
jj git push --allow-new,jj metaedit --update-committer-timestamp - Menghapus opsi konfigurasi yang akan dihentikan seperti
git.auto-local-bookmark,git.push-new-bookmarks jj evologtidak lagi mendukung predecessor commit lawas yang dicatat sebelumjj0.30- Auto-completion shell kini menampilkan deskripsi untuk alias, revset-alias, template-alias, dan fileset-alias kustom, serta mengekstrak deskripsi dari field
.docpada definisi alias berbentuk tabel jj showkini menerima beberapa revisi dan menampilkan tiap revisi secara berurutan, lebih mendekatigit showjj git fetchmembuat evolution history berbasis change ID, dan jika remote mempertahankan change ID, revisi descendant lokal akan di-rebase ke atas parent yang telah ditulis ulang- Perintah
jj util backend namemenampilkan nama backend commit yang digunakan oleh repositori saat ini - Menambahkan konfigurasi
edit-invocation-modeuntuk diff editor; saat disetel ke"file-by-file", editor dijalankan sekali untuk setiap file yang berubah sehingga alat per file sepertivimdiffbisa digunakan jj git remote addkini melaporkan error alih-alih panic saat nama remote kosong atau mengandung spasi- Diff color-words saat output warna dimatikan kini menampilkan before/after pada baris terpisah, meningkatkan keterbacaan diff yang dipipe atau di-redirect
1 komentar
Pendapat di Lobste.rs
Saya penasaran, jika
jj git fetchsekarang membuat riwayat evolusi berbasis change ID, apakah itu berarti kalau remote mempertahankan change ID, kita tidak perlu lagi menjalankanjj new mainsetiap kali tepat setelahjj git fetch?Kalau begitu, ini terlihat seperti peningkatan kualitas hidup yang cukup bagus
main, jadi sepertinya tidak membantu untuk bagian ituHanya saja saya tidak tahu bagaimana jadinya pada merge commit buatan GitHub yang tidak punya change ID
Saya malah lebih penasaran dengan bagian yang menyebut mereka beralih ke allocator memori
mimallocuntuk meningkatkan performa multithreadUntuk proses yang berjalan lama, saya pernah memakai hal seperti
jemallocuntuk mengurangi fragmentasi, tetapijjterasa seperti mulai dalam 1 ms dan selesai dalam kurang dari 10 ms, jadi cukup mengejutkan bahwa pergantian allocator bisa terasa dampaknyaSaya cari sedikit lagi, PR-nya adalah https://github.com/jj-vcs/jj/pull/9484, dan saya hanya menemukan sekitar https://github.com/jj-vcs/jj/issues/2490#issuecomment-2595323515, tetapi itu tidak terlihat seperti peningkatan kecepatan yang besar. Meski begitu, kalau memang lebih cepat dan perubahannya hanya beberapa baris, ya bagus juga
Disebut “jika remote mempertahankan change ID”, tetapi saya tidak tahu apakah remote biasanya benar-benar mempertahankannya
Saya tahu
jj gerrit uploadmenambahkan footer change ID, tetapijj git pushbiasa tidak melakukannyaNamun operasi yang menulis ulang commit, seperti squash merge atau rebase merge di GitHub, tidak akan mempertahankannya. Jika diproses dengan alat standar berbasis
libgit2, custom header tidak dipertahankan, sedangkan beberapa alat seperti pustaka Rust yang dipakai GitButler mendukung pelestarian custom header, tetapi saya ragu apakah forge memakai hal seperti ituSaya juga tidak tahu bagaimana cara memeriksa apakah itu benar-benar dipertahankan dengan baik
Dokumentasinya punya informasi lebih rinci
GitHub juga mempertahankannya; Anda bisa mengeceknya lewat commit pushcx di codebase lobsters atau commit saya
Saya penasaran apakah ada bahan bacaan atau tontonan yang bagus tentang alasan memakai jj alih-alih Git standar
Saya tahu jj bisa berjalan di atas Git dan saya juga sudah mencobanya di proyek hobi, tetapi saya masih belum benar-benar menemukan daya tarik penentu tentang kenapa itu lebih baik atau lebih mudah