uVersion
日本語
ダウンロード →

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>]
FlagDescription
-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]
FlagDescription
--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]
FlagDescription
-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]
FlagDescription
-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]
FlagDescription
-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

環境変数と終了コード

環境変数

VariableDescription
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