tools-p4-basics について
tools-p4-basics は、日常的な Perforce(P4)のバージョン管理を扱うリファレンススキルです。ファイル状態や、同期、編集、提出、変更の取り消しに使うコマンドとワークフローを解説します。
主な機能
- 01Perforce のファイル状態とリビジョン
- 02同期と選択的同期のコマンド
- 03追加、編集、削除のワークフロー
- 04提出と取り消しの操作
- 05ワークスペースとデポの状態確認
- 06調整とトラブルシューティングのガイド
活用シーン
- 01ワークスペースや指定ファイルの同期
- 02Perforce で編集や新規ファイルを管理
- 03チェンジリストを準備して提出
- 04ローカル変更の検出や同期問題の解決
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tjboudreaux/ cc-plugin-perforce --skill tools-p4-basicsインストール後、Claude Code で/tools-p4-basicsを入力して読み込まれたか確認します。
詳細
Perforce の基本
概要
Perforce(P4)は、大規模なコードベースやバイナリアセットに最適化された集中型バージョン管理システムです。このスキルでは、日常的に使う基本操作を説明します。
使用する場面
- 最新の変更を同期する
- ファイルを編集用に開く
- 新しいファイルを追加する
- ファイルを削除する
- 変更を送信する
- 不要な変更を取り消す
基本概念
ファイルの状態
| 状態 | 説明 | 変更するコマンド |
|---|---|---|
| デポに未登録 | ファイルはローカルに存在するが、追跡されていない | p4 add |
| 同期済み | ファイルがデポのバージョンと一致している | - |
| 編集済み | 編集用に開かれ、ローカルで変更されている | p4 edit then modify |
| 追加済み | デポへの追加対象としてマークされている | p4 add |
| 削除済み | デポからの削除対象としてマークされている | p4 delete |
| 最新ではない | デポにより新しいバージョンがある | p4 sync |
リビジョン指定子
# Specific revision number
file.txt#3
# Head revision (latest)
file.txt#head
# Changelist number
file.txt@12345
# Label
file.txt@release_1.0
# Date/time
file.txt@2024/01/15
file.txt@2024/01/15:14:30:00
# Revision range
file.txt#2,#5
file.txt@10000,@12000
同期操作
基本的な同期
# Sync entire workspace to head
p4 sync
# Sync specific path
p4 sync //depot/project/...
# Sync specific file
p4 sync //depot/project/file.txt
# Sync to specific revision
p4 sync //depot/project/...#head
p4 sync //depot/project/...@12345
# Sync to specific changelist
p4 sync @12345
同期オプション
# Preview sync (don't actually sync)
p4 sync -n //depot/project/...
# Force sync (re-download even if up to date)
p4 sync -f //depot/project/...
# Parallel sync (faster for many files)
p4 sync --parallel=threads=4 //depot/project/...
# Safe sync (don't clobber writable files)
p4 sync -s //depot/project/...
# Sync and show affected files
p4 sync //depot/project/... 2>&1 | head -50
選択的な同期
# Sync only specific file types
p4 sync //depot/project/....cs
p4 sync //depot/project/....prefab
# Sync excluding paths (use workspace view instead)
# Or sync specific subdirectories
p4 sync //depot/project/Assets/Scripts/...
編集操作
ファイルを編集用に開く
# Edit single file
p4 edit file.txt
# Edit multiple files
p4 edit *.cs
# Edit files in directory
p4 edit Assets/Scripts/...
# Edit with specific changelist
p4 edit -c 12345 file.txt
# Edit to default changelist
p4 edit -c default file.txt
編集状態を確認する
# See files open for edit
p4 opened
# See files open in specific changelist
p4 opened -c 12345
# See files open by all users
p4 opened -a //depot/project/...
# See who has file open
p4 opened -a //depot/project/file.txt
追加操作
新しいファイルを追加する
# Add single file
p4 add newfile.txt
# Add multiple files
p4 add *.cs
# Add files recursively
p4 add Assets/NewFeature/...
# Add to specific changelist
p4 add -c 12345 newfile.txt
# Add with specific file type
p4 add -t binary+l largefile.bin
p4 add -t text+x script.sh
ファイルタイプ
# Common file types
text # Text file, diff/merge enabled
binary # Binary file, no diff/merge
unicode # Unicode text
symlink # Symbolic link
# Modifiers
+l # Exclusive lock (only one user can edit)
+w # Always writable on client
+x # Executable bit
+S # Only head revision stored (saves space)
+F # Check for RCS keywords
# Examples
p4 add -t binary+l Assets/Textures/hero.psd # Locked binary
p4 add -t text Assets/Scripts/Player.cs # Text file
削除操作
ファイルを削除する
# Delete single file
p4 delete file.txt
# Delete multiple files
p4 delete *.bak
# Delete in specific changelist
p4 delete -c 12345 file.txt
# Delete files matching pattern
p4 delete //depot/project/....tmp
削除済みファイルを扱う
# See deleted files in depot
p4 files //depot/project/...@head | grep "delete change"
# Recover deleted file (sync old revision, then add)
p4 sync //depot/project/file.txt#head-1
p4 add file.txt
# Or use obliterate (admin only) to permanently remove
取り消し操作
変更を取り消す
# Revert single file
p4 revert file.txt
# Revert all files in changelist
p4 revert -c 12345 //...
# Revert all open files
p4 revert //...
# Revert unchanged files only
p4 revert -a //...
# Revert with preview
p4 revert -n //...
特定のリビジョンに戻す
# Sync to old revision (makes file read-only)
p4 sync //depot/project/file.txt#3
# To actually revert content and submit:
p4 sync //depot/project/file.txt#head
p4 edit file.txt
p4 sync -f //depot/project/file.txt#3
p4 resolve -ay file.txt
# Now submit
送信操作
変更を送信する
# Submit default changelist (opens editor for description)
p4 submit
# Submit specific changelist
p4 submit -c 12345
# Submit with description
p4 submit -d "Fix player movement bug"
# Submit specific files from default changelist
p4 submit file.txt
# Submit and reopen files for further editing
p4 submit -r -c 12345
送信前の確認
# Check what will be submitted
p4 opened -c default
# Check for conflicts before submit
p4 sync
p4 resolve
# Verify files are correct
p4 diff -se //... # Files that differ from depot
# Check changelist description
p4 change -o 12345
状態確認コマンド
ワークスペースの状態
# Files open for edit/add/delete
p4 opened
# Files that need sync
p4 sync -n //...
# Files modified but not opened (reconcile needed)
p4 status
# Reconcile local changes with depot
p4 reconcile //...
デポの状態
# List files in depot
p4 files //depot/project/...
# List files with specific pattern
p4 files //depot/project/....cs
# Get file info
p4 fstat //depot/project/file.txt
# Detailed file info
p4 fstat -Ol //depot/project/file.txt
整合操作
未追跡の変更を見つける
# Find all local changes not in Perforce
p4 reconcile //...
# Preview reconcile
p4 reconcile -n //...
# Reconcile specific types
p4 reconcile -e //... # Edited files
p4 reconcile -a //... # Added files
p4 reconcile -d //... # Deleted files
# Reconcile to specific changelist
p4 reconcile -c 12345 //...
よくあるワークフロー
毎日の同期ワークフロー
# 1. Check for open files
p4 opened
# 2. Sync latest
p4 sync
# 3. Resolve any conflicts
p4 resolve
# 4. Continue working
編集・送信ワークフロー
# 1. Open file for edit
p4 edit file.txt
# 2. Make changes
# ... edit file ...
# 3. Verify changes
p4 diff file.txt
# 4. Submit
p4 submit -d "Description of changes"
新しいファイルを追加するワークフロー
# 1. Create files locally
# ... create files ...
# 2. Add to Perforce
p4 add newfile.txt
# 3. Verify
p4 opened
# 4. Submit
p4 submit -d "Add new feature files"
ベストプラクティス
- 編集前に必ず同期する - 競合を避けます
- 変更リストの説明を具体的にする - 他の人が内容を理解しやすくなります
- 関連する変更をまとめて送信する - アトミックなコミットにします
p4 revert -aで変更していないファイルを元に戻す- その日の作業を終える前に
p4 openedを確認する p4 reconcileを使ってローカルの変更を検出する- 破壊的な操作の前に
-nでプレビューする - バイナリファイルには排他的ロックを使う
- 壊れたコードを送信しない - 先にテストします
- 変更リストを小さく保つ - レビューや取り消しが容易になります
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| "File not on client" | 先に p4 sync を実行します |
| "Can't edit - not synced" | ファイルを同期してから編集します |
| "Can't clobber writable file" | p4 sync -f を使うか、権限を修正します |
| "File already open" | p4 opened -a で誰が開いているか確認します |
| "Out of date" | 同期してから送信前に解決します |
| "No such file" | パスを確認し、p4 files を使って検証します |
コメント
Markdown 対応