本記事は以下の続編です。
Jujutsuのマージコンフリクト解決ツールとして IntelliJ IDEA を使用する方法(macOS)
上の記事で紹介した方法で、JujutsuのマージツールとしてIDEAを使用することができるようになりました。しかし、UIのボタンでマージ後のファイルが保存できない場合があったり、余計な警告ダイアログが出てきたりと、割と致命的な問題(端的に言えばバグ)が多いです。それらをなんとか解決しようとClaudeさんと話していたところ、「プラグインで解決できるのでは・・・?」 と思い至り、Claude Codeを駆使して作ってみました。
Table of Contents
- IDE(2026.1.2現在)側の問題点
- 作成したプラグイン
IDE(2026.1.2現在)側の問題点
まずは問題を整理します。
- マージダイアログを開くたびに、プロジェクト外ファイル編集の確認ダイアログが表示される ↑これ
- 書き込み処理のスレッドの関係で、例外が発生する
- どうやら、最近プラットフォーム側のスレッディングの方法が変更されたらしく、古い方法で処理を行うと例外が発生する場合があるようです。
--waitを位置引数と誤認識する- プロセス終了まで待機させるために、Toolboxが生成するスクリプトに渡す
--waitオプションは、macOSではopenコマンドに渡されます。しかし、そのスクリプトはそのオプションも含めてIDE側に伝搬しているようで、mergeサブコマンドはそれをファイルパスと誤認識します。そのため、直接openコマンドを使用した場合には発生しません。
- プロセス終了まで待機させるために、Toolboxが生成するスクリプトに渡す
作成したプラグイン
というわけで、作って公開しました。
https://plugins.jetbrains.com/plugin/32006-merge-cli-fixer
こちらをインストールすると、idea mergexというサブコマンドが追加されます。Jujutsuでは~/.config/jj/config.tomlに以下のように設定することで、マージツールとして機能します。
[ui]
merge-editor = "idea"
[merge-tools.idea]
program = "idea"
merge-args = ["mergex", "--wait", "$left", "$right", "$base", "$output"]
Toolbox側の設定で、スクリプトの生成がONになっていることを確認してください。
この状態で、jj resolveを実行すると・・・
マージダイアログが表示されました🎉 解決してApplyすると・・・
正しく解決できたことが分かります。


