Jujutsu
Jujutsu (一般的に jj と呼ばれています) は、Rust で書かれた最新の Git 互換バージョン管理システムであり、Git よりもシンプルでパワフルさを目指して作られています。
インストール
グラフィカルフロントエンド
Community-built tools around Jujutsu(Jujutsu 周辺のコミュニティ製ツール)もあわせて参照してください。
- gg — バージョン管理システム Jujutsu 向けのGUI。
- jjui — Jujutsu バージョン管理システムと対話するために設計されたTUI。
- jj-fzf — fzf をベースにし、jj log を中心として一般的な操作のキーバインドを備えたテキストUI。
- lazyjj — jujutsu/jj 向けのTUI。
便利なツール
Jujutsu は、差分表示(diff viewing)、差分編集(diff editing)、マージなどのタスクに対して代替ツールを使用するように設定できます。Git 向けに作られたツールの多くは Jujutsu もサポートしています。以下のツールは Jujutsu を直接または間接的にサポートしているため、そのまま使用するか、Jujutsu の設定ファイルを簡単に調整するだけで利用できます。
コンフリクトの解決
- KDiff3 — KDE デスクトップ向けのファイルおよびディレクトリの diff / マージツール。
- Meld — ファイル、ディレクトリ、バージョン管理プロジェクトを比較できるビジュアル diff / マージツール。
- Mergiraf — 増え続けるプログラミング言語やファイルフォーマットに対応した、構文を認識するGitマージドライバー。
- Vimdiff — Vim に組み込まれている diff エディタ。
差分表示 (Diff viewing)
- delta — 構文ハイライト機能を備えた、Rust製の diff ビューア。
- difftastic — 構文木(syntax tree)を使用してファイルを比較するツール。
設定
他のほとんどの VCS と同様に、コミットに添付される名前とメールアドレスを少なくとも設定する必要があります。
$ jj config set --user user.name "John Doe" $ jj config set --user user.email "johndoe@example.com"
--user オプションを指定すると、Jujutsu はグローバル設定ファイル(~/.config/jj/config.toml に保存)にこれらの設定を書き込みます。
あるいは、jj config edit --user を実行すると、デフォルトのテキストエディタ($EDITOR/{{ic\vert{}$VISUAL}} 環境変数で定義されているか、ui.editor 設定オプションで設定可能)で設定ファイルが開きます。
その他の設定については #ヒントとテクニック を参照してください。
使い方
すべての Jujutsu コマンドは jj プレフィックスで開始します。一般的なコマンドの一覧を表示するには、次を実行します。
$ jj help
各コマンドにはヘルプページがあり、次のいずれかを使用して確認できます。
jjhelp′′subcommand′′ jj subcommand --help
-h オプションを使用すると、簡略化されたヘルプを取得できます。
リポジトリの初期化
Jujutsu はストレージバックエンドとして Git を使用するため、既存の Git リポジトリと互換性があります。バージョン 0.34.0 以降、Jujutsu はデフォルトで colocated(共存型) リポジトリを作成するため、Git と併用するための追加設定は必要ありません。 次のコマンドは、現在のディレクトリにリポジトリを初期化します。
$ jj git init
Git と同じく、オプションでリポジトリの作成先パスを引数として受け取ります。
実行すると、データを保存するために .jj および .git フォルダが作成されます。バージョン 0.38.0 の時点では、単なる jj init というコマンドは存在しません。
リモートの Git リポジトリをクローンするには、以下を使用します。
$ jj git clone
jj git init と同様に、クローンされたリポジトリのローカルコピーも colocated になります。
jj git colocation コマンドファミリーを使用すると、colocation の現在の状態を確認したり、有効化/無効化を切り替えたりできます。詳細については、Jujutsu の公式ドキュメントページ を参照してください。
リモートホストとの認証
Jujutsu はプッシュやフェッチなどのすべてのリモート操作のバックエンドで Git を使用しているため、認証タスクもすべて Git によって処理されます。バージョン 0.6.0 以降、jj git サブコマンドは Git の認証ヘルパー(credential helpers)をサポートしており、v0.30.0 以降は SSH 認証も完全にサポートしています。
そのため、Jujutsu で認証ヘルパーを使用するには、Git 側の設定を行う必要があります。手順については Git#Using git-credential-libsecret as credential-helper を参照してください。
SSH 認証の場合は、SSH 鍵を作成し、ホスティングサービスのアカウントに追加します。該当する手順はホストのドキュメントを参照してください。
ヒントとテクニック
vimdiff バックエンドとして Neovim を使用する
Jujutsu には Vim を diff エディタとして使用する --tool vimdiff オプションがありますが、Neovim は自動検出されません。nvim を代わりに使用するには、設定ファイルに以下を追加します。
~/.config/jj/config.toml
[merge-tools.vimdiff] program = "nvim"
また、Jujutsu ドキュメントの こちら に説明されているように、独自のマージツールを追加することもできます。
参照
- Awesome-jj - 学習資料、ツール、その他の jj 関連の厳選リスト