jj v0.42.0 リリース - Git互換バージョン管理システム
(github.com/jj-vcs)- mimalloc メモリアロケータへ移行し、マルチスレッド性能を改善
jj commit --reset-author/--author、jj describe --no-edit/--edit/--reset-author/--authorなどの廃止予定コマンドオプションを削除jj git push --allow-new、jj metaedit --update-committer-timestampオプションを削除git.auto-local-bookmark、git.push-new-bookmarksなどの廃止予定設定オプションを削除jj evologがjj0.30 より前に記録されたレガシーコミット predecessor のサポートを終了- シェル自動補完がユーザー定義 alias、revset-alias、template-alias、fileset-alias の説明を表示し、テーブル形式の alias 定義の
.docフィールドから説明を抽出 jj showが複数のリビジョンを受け取り、git showにより近い形で各リビジョンを順番に表示jj git fetchが change ID ベースの evolution history を生成し、リモートが change ID を保持している場合はローカル descendant リビジョンを書き換えられた親の上に rebasejj util backend nameコマンドが現在のリポジトリで使われているコミットバックエンド名を出力- diff editor 向けの
edit-invocation-mode設定を追加し、"file-by-file"を指定すると変更ファイルごとにエディタを1回ずつ実行してvimdiffのようなファイル単位ツールを利用可能 jj git remote addが空のリモート名や空白を含むリモート名に対して panic ではなくエラーを報告- 色付き出力が無効な状態の color-words diff が before/after を別々の行で表示し、パイプやリダイレクトされた diff の可読性を改善
1件のコメント
Lobste.rsの意見
jj git fetchが今後 change IDベースの進化履歴 を生成するなら、リモートが change ID を保持する場合、毎回jj git fetchの直後にjj new mainをしなくてもよくなるのか気になるそうならかなり良い QoL 改善に見える
mainにできるはずなので、その点の助けにはならなさそうただし change ID のない GitHub生成のマージコミット でどうなるのかは分からない
マルチスレッド性能 を高めるために
mimallocメモリアロケータへ切り替えたという話のほうが気になる長時間動くプロセスでは断片化緩和のために
jemallocみたいなものを使ったことはあるけど、jjは 1ms で起動して 10ms 以内に終わるような印象なので、アロケータ変更が体感できるほど効くのは意外さらに調べると PR は https://github.com/jj-vcs/jj/pull/9484 で、https://github.com/jj-vcs/jj/issues/2490#issuecomment-2595323515 くらいしか見つからなかったが、大きな速度向上には見えない。それでも、より速くなって変更も数行で済むなら悪くない
「リモートが change ID を保持するなら」とあるけど、普通はリモートがそれを保持するのか分からない
jj gerrit uploadが change ID footer を追加するのは知っているが、通常のjj git pushはそうしないただし GitHub の squash merge や rebase merge のようにコミットを書き換える操作では保持されない。標準の
libgit2ベースのツールで処理すると custom header は保持されず、GitButler が使っている Rust ライブラリのように custom header の保持をサポートするツールも一部あるが、forge がそういうものを使っているかは疑わしいきちんと保持されているかどうかをどう確認すればいいのかも分からない
ドキュメントに詳しい情報がある
GitHub も保持していて、lobsters コードベースの pushcx のコミットや自分のコミットを見れば確認できる
標準の Git ではなく jj を使う理由 について、読んだり見たりする価値のある資料はあるだろうか
jj が Git の上で動かせることは知っているし、趣味のプロジェクトで試したこともあるが、なぜより良いのか、あるいはより簡単なのかという決定的な魅力がまだよく分からない