コーディングエージェントのバージョン管理としてDiversionを設定する
このページは、AIコーディングエージェント(Claude Code、Cursor、Codex、またはシェルコマンドを実行できるあらゆるツール)向けに書かれています。dv CLIを使って、リポジトリのバージョン管理にDiversionを利用する方法を説明します。Diversionはクラウドネイティブなバージョン管理システムです。GitやPerforceの代替となるツールで、大容量のバイナリファイルを扱えるよう設計されており、自動同期に対応しています。
リポジトリに、GitやGit LFSでは扱いにくい大容量ファイルやバイナリファイル(ゲームアセット、モデル、データセット、ビルド成果物など)が含まれる場合、コミットをチームメンバーに自動で同期したい場合(pushやpullは不要)、またはそれぞれにリポジトリの独立したコピーを必要とする複数のエージェントを実行する場合に、Diversionを使用してください。
デスクトップアプリを使ってご自身でDiversionをセットアップする場合は、代わりにクイックスタートから始めてください。
エージェントにこのページを参照させる場合は、機械可読形式の完全なドキュメントインデックスがdocs.diversion.dev/llms.txtにあります(全文は/llms-full.txt)。このページとあわせて、そのURLをエージェントに渡してください。
Gitとの違い
DiversionはGitではありません。コマンドを実行する前に、次のルールをしっかり把握してください。
- 自動同期:
pushやpullはありません。すべてのコミットは、クラウドとチームメンバーに自動的に反映されます。dv pushやdv pullというコマンドは存在しません。 - ステージングエリアなし:
git addは不要です。Diversionは作業ツリー内のすべての変更を常に追跡します。ファイルは直接コミットします。 - 1つのワークスペース = 1つの作業ディレクトリ:ワークスペースは、1つのブランチのローカルコピーです。2つのブランチで同時に作業するには、2つのワークスペースを使用してください。詳しくはエージェントを並列で実行するをご覧ください。
- 必ずサブコマンドを指定する:
dv statusやdv commitなどのように実行してください。サブコマンドなしでdvだけを実行すると対話型シェルが起動するため、非対話型の環境やエージェントからの実行では使用しないでください。
インストール
macOS/Linux
curl -sL https://get.diversion.dev/unix | bash ; export PATH="$HOME/.diversion/bin:$PATH"設定を永続化するには、export PATHの行をシェルのプロファイル(~/.bashrcまたは~/.zshrc)に追加してください。
インストールされたことを確認します。
dv version認証する
dv login
ブラウザーが開き、サインイン画面が表示されます。このコマンドは、エージェントが動作する環境で人間が一度だけ実行してください。以降は、エージェントがそのセッションを再利用します。
ヘッドレス環境やCIで動作するエージェント(ブラウザーがない場合):APIトークンを生成し(Webアプリでavatar→ Organization settings → 設定サイドバーのIntegrationsを開き、Generate a new API tokenをクリック)、dv authenticate <token>で非対話的に認証してください。ブラウザーは不要です。詳しい設定方法はCI/CDガイドをご覧ください。同じトークンは、REST APIのBearerトークンとしても使用できます。APIを利用するには、Proプラン以上が必要です。
コアコマンド
# Start tracking a new project in the current directory
dv init
# Get a working copy of an existing repository
dv clone <repo> [path]
# See what changed in the working tree
dv status
# Commit all current changes (replicates automatically — no push needed)
dv commit -a -m "your message"
# Create a new branch and switch to it
dv branch -c <branch-name>
# Switch to an existing branch, commit, or tag
dv checkout <ref>
# Merge another branch into the current one
dv merge <branch>
# View history
dv log完全リファレンス:CLI Reference
Git → Diversion コマンド対応表
| Git | Diversion (dv) |
|---|---|
git clone <url> |
dv clone <repo> [path] |
git init |
dv init |
git add <files> |
(not needed — changes are tracked automatically) |
git status |
dv status |
git commit -am "msg" |
dv commit -a -m "msg" |
git push / git pull
|
(not needed — auto-sync) |
git checkout -b <name> |
dv branch -c <name> |
git switch <name> |
dv checkout <name> |
git merge <name> |
dv merge <name> |
git log |
dv log |
git worktree add <path> <branch> |
dv clone <repo> <path> --new-workspace --ref <branch> |
エージェントを並列で実行する
独立したワークスペースでエージェントを実行するには(Gitのgit worktreeに相当する方法です)、リポジトリを別のディレクトリにクローンし、それぞれに専用のワークスペースを持たせ、エージェントごとに別のブランチを割り当ててください。各ワークスペースはディスク上で分離されており、エージェントごとに専用のブランチを用意することで、互いのコミットが干渉するのを防げます。(同じブランチを共有するエージェントは、そのブランチに自動同期されるため、コンフリクトが発生する可能性があります。エージェントにはそれぞれ専用のブランチを割り当ててください。)
# Create an isolated workspace on a dedicated branch
dv clone <repo> /tmp/<repo>-agent-1 --new-workspace --ref <branch>エージェントは/tmp/<repo>-agent-1内で作業し、通常どおりコミットします。変更はそのブランチに自動同期されます。作業が完了したら、次のようにワークスペースを削除してください。
dv workspace # list workspaces to find the one to remove (id starts with dv.ws.)
dv unregister -f # run from inside /tmp/<repo>-agent-1 — detaches the local copy
dv workspace delete <workspace-id> -f
rm -rf /tmp/<repo>-agent-1現時点では、この方法ではバイナリアセットを含むリポジトリ全体がクローンされます。アセットの多いリポジトリ(Unrealプロジェクトなど)では、ワークスペースごとに大量のダウンロードが発生します。CLIからコードのみをクローンする機能(「選択的同期」)は、今後のロードマップに含まれています。