Wiki
CLI uversion
uVersion CLI の完全リファレンス:すべてのコマンド、フラグ、例、JSON output、終了コード。
uversion バイナリは、デスクトップクライアントで利用できるすべての VCS 操作をカバーし、
さらに自動化(CI/CD、オンボーディングスクリプト、サードパーティツール連携)向けに機械可読な
--json 出力を提供します。このページの内容はすべて、開発者とスタジオ管理者を対象としています。
インストール
Windows では、uversion.exe バイナリはデスクトップクライアントの
インストーラーに含まれ、ユーザー PATH(%LOCALAPPDATA%\uVersion)に自動的に追加されます。
PATH エントリは更新のたびに重複が排除され、アンインストール時に削除されます。
新しいターミナルを開いて次を入力します:
uversion --help
macOS では自動です。初回起動時に、デスクトップクライアントが埋め込みバイナリへの
リンクを ~/.local/bin/uversion に作成し、そのフォルダーが PATH 上にあることを
(~/.zprofile 経由で)確認します。アプリを一度起動し、
新しいターミナルを開けば、uversion コマンドが利用可能になります。
PATH 上の別の場所に手動で作成するには:
ln -s /Applications/uVersion.app/Contents/Resources/uversion /usr/local/bin/uversion
Linux では、CLI はまだ .deb / .AppImage パッケージに同梱されていません。
必要な場合はソースからビルドしてください:
git clone https://github.com/jeremweb/uversion
cargo build -p uversion-cli --release
sudo cp target/release/uversion /usr/local/bin/
インストールされているバージョンを確認するには:
$ uversion --version
チートシート:すべてのコマンド
利用可能なすべてのコマンドを、通常出会う順に示します:
| コマンド | 機能 |
|---|---|
uversion login <url> -u <user> | サーバーで認証する |
uversion logout | 保存された認証情報を消去する |
uversion repos | アクセス可能なリポジトリを一覧表示する |
uversion clone <repo> [path] | リポジトリをクローンする |
uversion info | ワークスペースの状態と現在のユーザーを表示する |
uversion status [paths...] | 変更 / 新規 / 削除 / ロックされたファイルを確認する |
uversion checkout <paths...> | 編集のためにファイルをロックする |
uversion checkin <paths...> -m "..." | 変更をアップロードしてコミットする |
uversion revert <paths...> | ローカルの変更を破棄し、ロックを解放する |
uversion sync | サーバーから変更を取得する(リポジトリ全体) |
uversion content <path> --revision <rev> | ファイルの特定バージョンをダウンロードする |
uversion log | コミット履歴 |
uversion lock list | リポジトリのアクティブなロックをすべて確認する |
uversion lock release <paths...> | ファイルに触れずにロックを解放する |
uversion lock heartbeat | 保持しているすべてのロックの有効期限を延長する(長時間の CI ジョブ) |
uversion trust <url> | サーバーの自己署名 TLS フィンガープリントをピン留めする(TOFU、対話式。スクリプト化には --yes) |
uversion mistrust <url> | サーバーのピン留めしたフィンガープリントを削除する |
uversion trusted | フィンガープリントをピン留めしたサーバーを一覧表示する |
uversion content を除くすべてのコマンドは、機械可読な出力を生成するために --json を受け付けます
(JSON output を参照)。すべてのコマンドはフラグの詳細のために --help
も受け付けます。
認証
uversion login
uVersion サーバーで認証します。返された JWT はシステムキーリング (Windows Credential Manager、macOS Keychain、Linux では libsecret)に保存され、デスクトップクライアント およびエディタープラグインと共有されます。
uversion login <server_url> -u <username> [-p <password>]
| Flag | Description |
|---|---|
-u, --username | ユーザー名 |
-p, --password | パスワード。省略した場合はサイレントプロンプト(エコーなし) |
例:
$ uversion login https://uversion.mygamestudio.com -u alice
Password: ********
✓ Authenticated as alice (role: artist)
$ uversion login http://192.168.1.100:3000 -u bob -p $UV_PASSWORD
✓ Authenticated as bob (role: programmer)
$ uversion login https://uversion.mygamestudio.com -u ci-nightly -p "$UV_PASSWORD"
✓ Authenticated as ci-nightly (role: programmer)
uversion logout
システムキーリングからトークンを削除します。認証が必要な次のコマンドで、再度パスワードの入力を求められます。
$ uversion logout
✓ Credentials cleared
リポジトリ
uversion repos
現在のユーザーがアクセスできるリポジトリを一覧表示します。
$ uversion repos
ID Name Description
----------------------------------------------------------------------
1 hero-rpg Main RPG project
2 shared-assets Shared asset library
12 prototype-fps R&D prototype FPS
uversion clone
リポジトリをローカルにクローンします。local_path を省略すると、リポジトリ名のフォルダーが
現在の作業ディレクトリに作成されます。
uversion clone <repo_name_or_id> [local_path]
例:
$ uversion clone hero-rpg
Cloning hero-rpg to ./hero-rpg...
✓ 8,432 files in 47s (14.2 GB downloaded, 6.1 GB on disk after dedup)
$ uversion clone hero-rpg D:\Projects\HeroRPG
$ uversion clone 1 # par ID au lieu du nom
ファイル
uversion status
現在のワークスペースのファイルの状態を表示します:変更、新規(未追跡)、削除、他のユーザーによるロック。
uversion status [paths...] [--json]
例:
$ uversion status
Modified:
M Content/Maps/MainLevel.umap (locked by alice)
New:
A Content/Textures/NewTexture.png
Deleted:
D Content/OldAsset.uasset
Locked by others:
L Content/Characters/Hero.uasset (locked by bob)
1 modified, 1 new, 1 deleted, 1 locked by others
$ uversion status Content/Maps # filtre par dossier
$ uversion status --json | jq '.summary' # extraction scriptable
uversion checkout
対象ファイルに排他ロックを取得し、ディスク上で書き込み可能にします。
uversion checkout <paths...> [--force] [--add] [--json]
| Flag | Description |
|---|---|
--force | ファイルが他のユーザーにロックされていても checkout を強制します。force_unlock 権限(デフォルトでは管理者)が必要です。監査対象。 |
--add | ローカルにまだ存在しないパス(新規ファイル)の checkout を許可します |
例:
$ uversion checkout Content/Maps/MainLevel.umap
✓ Lock acquired: Content/Maps/MainLevel.umap
$ uversion checkout Content/Characters/Hero.uasset Content/Characters/Villain.uasset
✓ Lock acquired: Content/Characters/Hero.uasset
✓ Lock acquired: Content/Characters/Villain.uasset
$ uversion checkout Content/Maps/MainLevel.umap # déjà locked par bob
✗ Locked by bob since 2026-05-15T08:42:11Z. Use --force if you have permission, or request release.
$ uversion checkout --force Content/Maps/MainLevel.umap # admin force-steal
⚠ Forced lock takeover (was bob)
✓ Lock acquired: Content/Maps/MainLevel.umap
uversion checkin
変更されたファイルをアップロードし、単一のアトミックなトランザクションでサーバーにコミットします。成功後、ロックは自動的に解放されます。
uversion checkin [paths...] -m <message> [--all] [--json]
| Flag | Description |
|---|---|
-m, --message | コミットメッセージ(必須) |
-a, --all | 引数で渡したものだけでなく、ワークスペース内のすべての変更ファイルを含めます |
例:
$ uversion checkin Content/Maps/MainLevel.umap -m "Fixed lighting in main level"
Validating 1 file...
✓ All validation rules passed
Uploading: [####################] 100% · 84 MB
✓ Committed as 7f3a9b1 (1 file, 84 MB uploaded, 0 deduped)
$ uversion checkin --all -m "Weekly art update" # tout le workspace
$ uversion checkin Content/Characters/ -m "Updated character meshes"
uversion revert
1 つ以上のファイルのローカルの変更を破棄し、サーバーのバージョンを復元して、対応するロックを解放します。
uversion revert <paths...>
例:
$ uversion revert Content/Maps/MainLevel.umap
✓ Reverted: Content/Maps/MainLevel.umap (lock released)
$ uversion revert Content/Characters/ # revert récursif par dossier
uversion sync
サーバーから最新の変更をダウンロードし、ローカルワークスペースに適用します。
uversion sync [--force] [--json]
| Flag | Description |
|---|---|
-f, --force | フルシンク:前回のシンク以降の差分だけでなく、すべてのファイルを再ダウンロードします。ワークスペースが破損した場合に便利です。 |
例:
$ uversion sync
Syncing from revision 41 → 47...
✓ 12 files updated, 3 added, 1 deleted (1.4 GB downloaded)
$ uversion sync --force # re-télécharge tout
uversion content
ローカルワークスペースに触れずに、ファイルの特定バージョン(リビジョン番号指定)をダウンロードします。 revert せずに比較、アーカイブ、または過去の状態の取得に便利です。
uversion content <path> [-r <revision>] [-o <file>]
例:
$ uversion content Content/Maps/MainLevel.umap --revision 12 --output ./snapshot.umap
✓ Downloaded MainLevel.umap @ rev 12 → ./snapshot.umap (84 MB)
$ uversion content Content/Characters/Hero.uasset --revision 12 --output ./hero-v12.uasset
履歴
uversion log
現在のリポジトリのコミット履歴。ファイルで絞り込むこともできます。
uversion log [-n <limit>] [-p <path>] [--json]
| Flag | Description |
|---|---|
-n, --limit | 表示するエントリ数(デフォルト:20) |
-p, --path | ファイルパスで絞り込む |
例:
$ uversion log
commit 7f3a9b1c2d... (HEAD)
Author: alice
Date: 2026-05-15T08:30:00Z
Fixed lighting in main level
Content/Maps/MainLevel.umap (rev 12)
commit 6e2b8a0...
Author: bob
Date: 2026-05-14T17:22:00Z
Hero pose pass
Content/Characters/Hero.uasset (rev 8)
$ uversion log -n 5 # 5 derniers commits
$ uversion log --path Content/Maps/MainLevel.umap # historique d'un fichier
$ uversion log --json -n 50 | jq '.commits[].hash' # extract hashes en CI
ロック
uversion lock list
現在のリポジトリのアクティブなロックをすべて表示します。
uversion lock list [--json]
例:
$ uversion lock list
File User Acquired
----------------------------------------------------------------------
Content/Maps/MainLevel.umap alice 2026-05-15T08:42:11Z
Content/Characters/Hero.uasset bob 2026-05-14T17:00:00Z
Content/UI/HUD.uasset alice 2026-05-15T09:15:00Z
3 locks active
uversion lock release
ファイルのローカルコンテンツに触れずに、1 つ以上のロックを手動で解放します。 変更を加えていないアセットを「返却」したい場合に使用します(通常、誤って checkout した場合や、 送信せずに始めた作業を中断する場合)。
uversion lock release <paths...> [--json]
例:
$ uversion lock release Content/Maps/MainLevel.umap
✓ Lock released: Content/Maps/MainLevel.umap
uversion lock heartbeat
現在のユーザーが保持しているすべてのロックの有効期限を延長します。通常のワークフローでは不要です。 ロックを長時間保持する CI ジョブが、ロックがまだアクティブであることを管理者に示すために使用します。
uversion lock heartbeat
CI での典型的な例:
$ while build_in_progress; do
uversion lock heartbeat
sleep 300
done
情報
uversion info
現在のワークスペース、認証済みユーザー、およびシンク状態の情報を表示します。
$ uversion info
User: alice (lead)
Repository: hero-rpg (id: 1)
Server: https://uversion.mygamestudio.com
Workspace: alice-cli (ws-abc123)
Local path: D:\Projects\HeroRPG
Last sync: revision 42 (2 hours ago)
Files: 8,432 (5 modified, 2 locked by you, 3 locked by others)
JSON output
すべてのコマンドは、人間向けの表示の代わりに機械可読な出力を生成するために --json フラグを受け付けます。
パイプラインで CLI をスクリプト化するのに不可欠です。
例:uversion status --json
{
"files": [
{
"path": "Content/Maps/MainLevel.umap",
"status": "modified",
"lock": { "user": "alice", "acquired_at": "2026-05-15T08:42:11Z" }
},
{
"path": "Content/Textures/NewTexture.png",
"status": "new",
"lock": null
}
],
"summary": {
"modified": 1,
"new": 1,
"deleted": 0,
"locked_by_others": 0
}
}
例:uversion log --json -n 1
{
"commits": [
{
"hash": "7f3a9b1c2d...",
"author": "alice",
"date": "2026-05-15T08:30:00Z",
"message": "Fixed lighting in main level",
"files": [
{ "path": "Content/Maps/MainLevel.umap", "action": "modified", "revision": 12 }
]
}
]
}
エラー処理
失敗すると、CLI は Error: <message> を stderr に書き込み、コード 1 で終了します。
エラーは stdout に JSON として出力されません:--json モードでは、成功時の出力のみが構造化されます。
スクリプトでは終了コードをテストしてください(非ゼロ = 失敗)。
よくあるパターン
新しいチームメンバーのオンボーディング
uversion login https://uversion.mygamestudio.com -u newdev
uversion repos # confirme l'accès
uversion clone hero-rpg ~/Projects/HeroRPG # download initial
日常のワークフロー(artist / programmer)
# Début de journée
uversion sync
# Avant d'éditer
uversion checkout Content/Maps/MainLevel.umap
# ... édition dans Unreal Editor ou Rider ...
# Commit en fin de journée
uversion checkin --all -m "Updated main level + hero animations"
監査スクリプト:誰が何をロックしているか?
uversion lock list --json | jq -r '.locks[] | "\(.user)\t\(.path)\t\(.acquired_at)"'
過去のリビジョンのアセットを取得する(ワークスペースに触れずに)
uversion log --path Content/Characters/Hero.uasset -n 10 # repère le commit voulu
uversion content Content/Characters/Hero.uasset --revision 6e2b8a0 --output ~/backup/Hero-v8.uasset
CI ナイトリービルド
uversion login "$UV_SERVER" -u ci-nightly -p "$UV_PASSWORD"
uversion clone hero-rpg ./project
cd project
uversion sync --json > sync.log
# Tenir le lock pendant un long cook
uversion checkout Content/Cooking/Distribution.uasset
( while pgrep RunUAT; do uversion lock heartbeat; sleep 300; done ) &
# ... build / cook ...
uversion lock release Content/Cooking/Distribution.uasset
環境変数と終了コード
環境変数
| Variable | Description |
|---|---|
RUST_LOG | ログの詳細度を制御します(stderr に書き込まれます)。例:RUST_LOG=debug。デフォルトレベル:warn。これは CLI が読み取る唯一の環境変数です。 |
サーバー URL とユーザー名は config.toml
(%APPDATA%/uversion/uVersion/config/)から、トークンはシステムキーリングから取得されます:UV_* 変数は読み取られません。
終了コード
| コード | 意味 |
|---|---|
0 | 成功 |
1 | アプリケーションエラー全般(認証、権限、ネットワーク、サーバー、IO、ワークスペース外、競合、検証など)。CLI は終了コードでエラーを区別しません。 |
2 | 引数の解析エラー、--help または --version(clap の慣例) |
bash スクリプトでの使用例:
uversion checkin --all -m "Nightly"
if [ $? -ne 0 ]; then
echo "Checkin failed, see logs (stderr)"
exit 1
fi