jj コマンドをうっかり繰り返し入力すると サブコマンドエラー になるが、jj の設定エイリアスで吸収できる
- 例では、現在編集中の changeset の短い ID を取得しようとして
jj jj show -T 'change_id.short()' が失敗する状況を示している
jj は git のように設定ファイルで alias を定義でき、jj util exec で残りのコマンドを再び jj に渡せる
- 単純なエイリアスでは
-T が実行対象ではなく jj util exec のオプションとして解釈されるため、-- で引数の解析を打ち切る必要がある
- 最終設定
jj = ["util", "exec", "--", "jj"] を使うと、jj jj show だけでなく何度も入れ子になった jj jj jj... show でも同じ changeset ID を出力する
繰り返し入力された jj がサブコマンドエラーで失敗する
jj の使用中にコマンドラインで jj をひとつ余計に入力すると、2つ目の jj がサブコマンドとして解釈されて失敗する
- 例は、現在編集中の changeset の短い ID を取得しようとするコマンド
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
- シェルのエイリアスでも回避できるが、
jj 自身の設定にある alias を使うこともできる
- 設定の編集には
jj config edit を使える
- シェルから設定を変更するには
jj config set を使える
jj util exec で -- により引数の受け渡しを固定する
- 最初の試みは、エイリアスで
jj util exec を使って再び jj を実行する方法
[aliases]
# jj all the way down
jj = ["util", "exec", "jj"]
- この設定では
-T が実行対象の jj ではなく jj util exec のオプション として解釈されて失敗する
$ jj jj show -T 'change_id.short()'
error: unexpected argument '-T' found
tip: to pass '-T' as a value, use '-- -T'
Usage: jj util exec [OPTIONS] <COMMAND> [ARGS]...
For more information, try '--help'.
-- を入れると、それ以降のオプション解析を停止し、残りの引数をそのまま実行対象に渡せる
[aliases]
# jj all the way down
jj = ["util", "exec", "--", "jj"]
- 最終設定後は、通常の
jj show、入れ子になった jj jj show、さらに多く繰り返した jj jj jj ... show がすべて同じ短い changeset ID を出力する
$ jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx
1件のコメント
Lobste.rs の意見
以前にも git git git git git があった
これはもっと単純な方法でも可能:
この形の唯一の欠点は、記憶が正しければ、
jj jjのように他の引数なしで実行したときに、jjのようにデフォルトコマンドを実行しないことわあ、ほぼ1年前(09/28/25)に JJ Discord に同じ解決策を投稿していた
jj jj ...というタイプミスをjj ...のように動作させるには、実際にはこれが必要:実のところ、このやり方はかなり気に入っている
これって bunny party への参照?
自分が管理している jj 設定 gist にも追加した: https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c
それでも、Jujutsu とは何で、なぜ使うべきなのかを、ツイートの長さで5歳児に説明するようなまとめで見てみたい
前職では Git を4年間毎日使っていて、本当に嫌いだった。自分たちに必要だったことや大半の使い方に比べて、奇妙なほど過度に複雑で、ほとんどの人にとっては分散バージョン管理システムではなく、Github 中心の中央集権的なサーバーベースのツールだった
多くの Git ユーザーが、
gitにはイギリス英語で「怒りっぽく非協力的で役に立たない人」という意味もあることを知らないのは面白い。ツールとしての Git をよく表している言葉だただ、他のバージョン管理システムは使ったことがないので、比較には弱い。Jujutsu はググりにくいし、ドキュメントも自分のような人より、もっと熟練したバージョン管理ユーザー向けに書かれているように思える
gitを選んだのは、実際に無礼で怒りっぽい人という意味があったからだと思う