今やバージョン管理ツールとして圧倒的な人気を集める「Git」ですが、Linuxカーネル開発のために作られたという経緯もあり、使いこなすにはかりの経験値が必要となります。
この問題を解決するために、Googleのソフトウェアエンジニアによって、新しいバージョン管理システム「Jujutsu」の開発が進められています。
Jujutsuの素晴らしさを紹介する記事「jj init 」によると、Jujutsuは過去のバージョン管理システムの問題点やメリットを分析して作られていて、Googleの既存のバージョン管理システムを置き換える勢いがあるとのこと。
JujutsuはmacOSでは、brew install jj
を実行するだけで使用することができ、バックエンドとしてGitを使用しているため、採用にコストがかからないというメリットもあるそうです。
公式サイトでは、Jujutsuの特徴がリストアップされています。
- コミットとしての作業コピー: ファイルへの変更は通常のコミットとして自動的に記録され、その後の変更のたびに修正される。この「スナップショット」デザインは、ユーザー向けのデータモデルを単純化し、内部アルゴリズムを単純化し、Gitの隠し場所やインデックス/ステージング領域のような機能を完全に包含する。
- 操作ログとアンドゥ: Jujutsuは、コミット、プル、プッシュに至るまで、リポジトリ上で実行されたすべての操作を記録する。
- 自動リベースと競合の解決: コミットを変更すると、すべての子孫は変更されたばかりのコミットの上に自動的にリベースされる。これにより、「パッチベース」のワークフローが簡単になる。
- 安全な同時レプリケーション: Jujutsuは同時実行シナリオの下で安全であるように設計されている。rsyncやDropboxで保存されたリポジトリを使用しても、リポジトリが破損した状態になることはない。最悪の場合、ローカルとリモートのコンフリクトが発生し、それを解決する必要がある。
コマンド名は、打ちやすく、置き換えやすい「jj」になっていて、プロジェクトは"jj"にマッチするので"Jujutsu"と呼ばれているそうです。
Jujutsuは、基盤となるデータとストレージモデルを抽象化していて、Gitリポジトリをストレージとして利用できるほか、ネイティブストレージのバックエンドも存在します。
Rustで作られたオープンソースツールで、最新版をGitHubからダウンロードすることができます。
バージョン管理ツールといえばGitがデファクトスタンダードとなっていますが、Jujutsuがこれを置き換えることができるのか注目したいと思います。