Git互換バージョン管理システム jj の v0.23.0 が出ました。あの不具合の修正は含まれているでしょうか?
「jj split」の差分エディターの表示が乱れる件:解決
Fixed bugs
Updated the built-in diff editor
scm-record
to version 0.4.0, which includes multiple fixes.
「内蔵の差分エディターの scm-record
をバージョン 0.4.0 に上げた」とありますね。その内訳を見ると:
Fixed
(#37): Fixed redraw issues when rendering tabs and other non-printing characters.
「タブやその他の非印刷文字をレンダリングするときの再描画の問題を修正」(by機械翻訳)とあります。やったね
実際、バージョンアップ後、回避策の設定を外してみたところ、症状は再現しなくなりました。すばらしい。 (「君のレポジトリを領域展開 - 次世代バージョン管理システム Jujutsu の世界」の「不具合・トラブルシューティング」も更新しておきました:差分)
一方、jj split には、もう一つ、そんな致命的ではないものの、ちょっとだけ面倒くさい問題がもう一つ残っています。
「jj split」で、1ファイルの完全削除を選択できない:未解決
$ jj st Working copy changes: D ahaha.txt D hogehoge.txt Working copy : umzqkvwk 4306b0ee (no description set) Parent commit: tyktsytv 6d85643f TEST ALL $ jj split
エディターが起動して、分割される前半のコミットログ登録を登録するが、ファイル名が列挙されていない
JJ: Enter a description for the first commit. JJ: Lines starting with "JJ: " (like this one) will be removed.
コミットログとして、Remove ahaha.txt
と入力して保存・終了すると
$ jj split Hint: Using default editor ':builtin'; run `jj config set --user ui.diff-editor :builtin` to disable this message. Warning: No changes have been selected, so the first commit will be empty First part: umzqkvwk bb58fb86 (empty) Remove ahaha.txt Second part: pxouuutu 9b49a166 (no description set) Working copy now at: pxouuutu 9b49a166 (no description set) Parent commit : umzqkvwk bb58fb86 (empty) Remove ahaha.txt $ jj log @ pxouuutu iyahaya@nifty.com 2024-11-10 01:41:16 9b49a166 │ (no description set) ○ umzqkvwk iyahaya@nifty.com 2024-11-10 01:38:30 git_head() bb58fb86 │ (empty) Remove ahaha.txt ○ tyktsytv iyahaya@nifty.com 2024-11-10 01:31:22 6d85643f │ TEST ALL
分割されたコミットは (empty)
つまり無修正になってしまいます。つまり、やはり直っていません。
該当 Issueの 3702 もまだ Open のままでした(そっちを見た方が早いって)
まぁ、ファイルまるまる削除するというケースはあまり多くありませんし、回避するのも
jj split (削除するファイル名)
で実行するなりして差分エディターを起動しなければいいだけの話なので、それほど大きな問題でもないでしょう。まだしばらくの辛抱ですね。
その他の修正
自分も jj の全ての機能を使いこなせていないので、馴染みがある1点だけ:
- The
HEAD@git
symbol no longer resolves to the Git HEAD revision. Usegit_head()
or@-
revset expression instead. Thegit_head
template keyword now returns a boolean.
「Git併用モード」のレポジトリの場合、リビジョンを指定する式で git から見た最新コミットを今まで HEAD@git
という形で指定できましたが、それが廃止されるみたいです。
使うパターンとしては、GitHub へ push する前にブランチのヘッドを手動で移動させるときくらいでしょうか。今までは jj bookmark set master -r "HEAD@git"
みたいな使い方が出来ましたが、かわりに "@-"
1 や git_head()
という関数を使いましょう。
余談:v0.22 の時の書き洩らし
前回 v0.22のリリースのとき 、言及を忘れていたのですが、jj branch
サブコマンドが非推奨になって、かわりに jj bookmark
というサブコマンドを使うことになってました。
jj branch
has been deprecated in favor ofjj bookmark
.Rationale: Jujutsu's branches don't behave like Git branches, which a confused many newcomers, as they expected a similar behavior given the name. We've renamed them to "bookmarks" to match the actual behavior, as we think that describes them better, and they also behave similar to Mercurial's bookmarks.
(機械翻訳+少し手直し)
jj branch
は非推奨となり、jj bookmark
が使用されます。理論的根拠: Jujuku のブランチは Git のブランチのように動作しません。 名前から同様の動作を期待していたので、多くの新参者を混乱させました。 実際の動作に合わせて名前を「bookmark 」に変更しました。 これはそれらをよりよく説明しており、また Mercurial の bookmark と同様に動作します。
v0.23 になった今でも、まだちょっとなれなくて、たまに jj branch
とか打ってしまいます。早く慣れなくちゃいけませんね
-
現在のコミット(
@
)の親(-
)なので、厳密にはHEAD@git
とイコールではない↩