mcpField
T
tools-p4-basics

tools-p4-basics

github.com/tjboudreaux開発746 回インストール38 週間前に更新
リポジトリ

tools-p4-basics について

tools-p4-basics は、日常的な Perforce(P4)のバージョン管理を扱うリファレンススキルです。ファイル状態や、同期、編集、提出、変更の取り消しに使うコマンドとワークフローを解説します。

主な機能

  1. 01Perforce のファイル状態とリビジョン
  2. 02同期と選択的同期のコマンド
  3. 03追加、編集、削除のワークフロー
  4. 04提出と取り消しの操作
  5. 05ワークスペースとデポの状態確認
  6. 06調整とトラブルシューティングのガイド

活用シーン

  1. 01ワークスペースや指定ファイルの同期
  2. 02Perforce で編集や新規ファイルを管理
  3. 03チェンジリストを準備して提出
  4. 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"

ベストプラクティス

  1. 編集前に必ず同期する - 競合を避けます
  2. 変更リストの説明を具体的にする - 他の人が内容を理解しやすくなります
  3. 関連する変更をまとめて送信する - アトミックなコミットにします
  4. p4 revert -a で変更していないファイルを元に戻す
  5. その日の作業を終える前に p4 opened を確認する
  6. p4 reconcile を使ってローカルの変更を検出する
  7. 破壊的な操作の前に -n でプレビューする
  8. バイナリファイルには排他的ロックを使う
  9. 壊れたコードを送信しない - 先にテストします
  10. 変更リストを小さく保つ - レビューや取り消しが容易になります

トラブルシューティング

問題解決策
"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 を使って検証します

コメント