2 分で読了 #devops
このページの目次

Perforce 操作マニュアル

Perforce (P4) は集中型バージョン管理システムです。主要な概念: depot (リポジトリ), workspace/client (ワークスペースマッピング), changelist (変更セット、Git の staging に相当), shelve (サーバーへの一時保存、Git の stash push に相当), stream (ブランチモデル)。

p4 コマンドは環境変数 P4PORTP4USERP4CLIENT に依存するか、-p/-u/-c パラメータで指定します。

ワークスペース

ワークスペースは、depot のパスからローカルパスへのマッピングを定義します。各ワークスペースには一意の client name (通常は hostname と一致) があります。

p4 client                              # 現在のワークスペースを作成/編集 (エディタを開く)
p4 client -o                          # ワークスペース設定を表示 (編集しない)
p4 client -o <name>                   # 指定されたワークスペースを表示
p4 client -d <name>                   # ワークスペースを削除
p4 clients                            # すべてのワークスペースをリスト
p4 clients -u <user>                  # 特定のユーザーのワークスペース

# 重要な View フィールド: depot → local のマッピング
# //depot/project/... //client/project/...
# -//depot/project/build/... //client/project/build/...   ← ディレクトリを除外

同期と更新

p4 sync                               # 現在のワークスペースを同期 (変更のあるファイルのみ取得)
p4 sync -f                            # ローカルを強制上書き (ファイルが変更されていなくても再取得)
p4 sync -f #none                      # ローカルを空にする (ファイルを削除せず、not having としてマーク)
p4 sync //depot/path/...              # 特定パスのみを同期
p4 sync @changelist                   # 指定された changelist に同期
p4 sync ...@2025/01/15                # 指定された日付に同期

Changelist

P4 には staging area がありません——変更は自動的に default changelist に追加されます。コミットする前に、通常は番号付き changelist を作成して一連の変更を管理します。

# 表示
p4 changes -m 10                      # 最近の 10 回のコミット
p4 changes -u <user> -m 10            # 特定のユーザーのコミット
p4 changes -s submitted               # 既にコミットされたもののみ表示
p4 describe <changelist>              # changelist の詳細を表示 (ファイル diff + 説明)

# 操作
p4 opened                             # 現在のワークスペースで開かれているファイル (git status に相当)
p4 opened -c <changelist>             # 指定された changelist のファイル

p4 change                             # 新しい番号付き changelist を作成 (エディタを開く)
p4 change -o                         # 現在の変更内容を表示

p4 reopen -c <changelist> <file>      # ファイルを指定された changelist に移動
p4 revert <file>                      # 変更を元に戻す (git checkout -- file に相当)
p4 revert -c <changelist> //...       # 全体 changelist を元に戻す

p4 submit -c <changelist>             # 指定された changelist をコミット
p4 submit -d "description"            # default changelist をコミット

Shelve

未完成の変更をサーバーに一時保存し、コミットしません。他の開発者は unshelve して確認したり、引き継いだりできます。

p4 shelve -c <changelist>             # サーバーに一時保存
p4 shelve -c <changelist> -f          # 既存の shelve を上書き
p4 unshelve -s <changelist>           # shelved された変更を取得
p4 unshelve -s <changelist> -c <new>  # 新しい changelist に取得
p4 shelve -d -c <changelist>          # shelve を削除
p4 describe -S -s <changelist>        # shelved された内容を表示

# すべての shelved changelists をリスト
p4 changes -s shelved -u <user>

ファイル操作

p4 add <file>                         # 新規ファイルを追加 (git add に相当)
p4 edit <file>                        # チェックアウトして編集 (P4 のファイルはデフォルトで読み取り専用)
p4 delete <file>                      # 削除をマーク
p4 move <src> <dst>                   # 移動/リネーム (履歴を保持)
p4 copy <src> <dst>                   # コピー (ブランチの由来を記録)

p4 diff <file>                        # 変更を表示 (git diff に相当)
p4 diff -f <file>                     # 強制 diff (ファイルがチェックアウトされていなくても)
p4 diff2 -q //depot/...@cl1 //depot/...@cl2  # 2 つの changelist 間の差分

p4 annotate <file>                    # 注釈 (git blame に相当)
p4 filelog <file>                     # ファイル履歴
p4 filelog -l <file>                  # 完全なコミット説明

Stream (ブランチモデル)

p4 stream -o //depot/stream-name      # stream 設定を表示
p4 streams                            # すべての stream をリスト

デバッグ

p4 info                               # サーバー情報 (バージョン、アドレス、ユーザー名)
p4 where //depot/path/file            # depot パスがローカルの実際のパスにマッピングされる場所を表示
p4 have                               # ローカルに存在するファイルをリスト (同期済みバージョンに相当)
p4 files //depot/path/...             # depot 内のファイルをリスト
p4 fstat <file>                       # ファイル状態: head revision, last change, lock...
p4 login                              # ログイン (パスワード入力)
p4 login -s                           # ログイン状態を表示
p4 logout
p4 set                                # 環境変数を表示 (P4PORT/P4USER/P4CLIENT)