Perforce 操作マニュアル
Perforce (P4) は集中型バージョン管理システムです。主要な概念: depot (リポジトリ), workspace/client (ワークスペースマッピング), changelist (変更セット、Git の staging に相当), shelve (サーバーへの一時保存、Git の stash push に相当), stream (ブランチモデル)。
p4 コマンドは環境変数 P4PORT、P4USER、P4CLIENT に依存するか、-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> # 特定のユーザーのワークスペース
同期と更新
p4 sync p4 sync -f p4 sync -f p4 sync //depot/path/... p4 sync @changelist p4 sync ...@2025/01/15
Changelist
P4 には staging area がありません——変更は自動的に default changelist に追加されます。コミットする前に、通常は番号付き changelist を作成して一連の変更を管理します。
p4 changes -m 10 p4 changes -u <user> -m 10 p4 changes -s submitted p4 describe <changelist> # changelist の詳細を表示 (ファイル diff + 説明)
p4 opened p4 opened -c <changelist> # 指定された changelist のファイル
p4 change p4 change -o
p4 reopen -c <changelist> <file> # ファイルを指定された changelist に移動
p4 revert <file> # 変更を元に戻す (git checkout -- file に相当)
p4 revert -c <changelist> //...
p4 submit -c <changelist> # 指定された changelist をコミット
p4 submit -d "description"
Shelve
未完成の変更をサーバーに一時保存し、コミットしません。他の開発者は unshelve して確認したり、引き継いだりできます。
p4 shelve -c <changelist> # サーバーに一時保存
p4 shelve -c <changelist> -f p4 unshelve -s <changelist> # shelved された変更を取得
p4 unshelve -s <changelist> -c <new> # 新しい changelist に取得
p4 shelve -d -c <changelist> # shelve を削除
p4 describe -S -s <changelist> # shelved された内容を表示
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
p4 annotate <file> # 注釈 (git blame に相当)
p4 filelog <file> # ファイル履歴
p4 filelog -l <file> # 完全なコミット説明
Stream (ブランチモデル)
p4 stream -o //depot/stream-name p4 streams
デバッグ
p4 info p4 where //depot/path/file p4 have p4 files //depot/path/... p4 fstat <file> # ファイル状態: head revision, last change, lock...
p4 login p4 login -s p4 logout
p4 set