Skip to main content

tools-p4-basics

Fundamental Perforce operations including sync, edit, add, delete, submit, revert, and file state management.

跳到安装

来源信息

仓库
tjboudreaux/cc-plugin-perforce
最近来源活动
2026年2月6日 04:08
检测到的 SKILL.md 语言
英语
星标
8
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
tools-p4-basics
description
Fundamental Perforce operations including sync, edit, add, delete, submit, revert, and file state management.
# Perforce Basics ## Overview Perforce (P4) is a centralized version control system optimized for large codebases and binary assets. This skill covers essential daily operations. ## When to Use - Syncing latest changes - Editing files for modification - Adding new files - Deleting files - Submitting changes - Reverting unwanted changes ## Core Concepts ### File States | State | Description | Command to Change | |-------|-------------|-------------------| | **Not in depot** | File exists locally but not tracked | `p4 add` | | **Synced** | File matches depot version | - | | **Edited** | Open for edit, modified locally | `p4 edit` then modify | | **Added** | Marked for addition to depot | `p4 add` | | **Deleted** | Marked for deletion from depot | `p4 delete` | | **Out of date** | Depot has newer version | `p4 sync` | ### Revision Specifiers ```bash # 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 Operations ### Basic Sync ```bash # 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 ``` ### Sync Options ```bash # 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 ``` ### Selective Sync ```bash # 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 Operations ### Opening Files for Edit ```bash # 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 ``` ### Check Edit Status ```bash # 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 Operations ### Adding New Files ```bash # 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 ``` ### File Types ```bash # 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 Operations ### Deleting Files ```bash # 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 ``` ### Handling Deleted Files ```bash # 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 Operations ### Reverting Changes ```bash # 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 //... ``` ### Revert to Specific Revision ```bash # 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 Operations ### Submitting Changes ```bash # 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 ``` ### Pre-Submit Checks ```bash # 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 ``` ## Status Commands ### Workspace Status ```bash # 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 //... ``` ### Depot Status ```bash # 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 ``` ## Reconcile Operations ### Finding Untracked Changes ```bash # 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 //... ``` ## Common Workflows ### Daily Sync Workflow ```bash # 1. Check for open files p4 opened # 2. Sync latest p4 sync # 3. Resolve any conflicts p4 resolve # 4. Continue working ``` ### Edit-Submit Workflow ```bash # 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" ``` ### Add New Files Workflow ```bash # 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" ``` ## Best Practices 1. **Always sync before editing** - Avoid conflicts 2. **Use descriptive changelist descriptions** - Help others understand 3. **Submit related changes together** - Atomic commits 4. **Revert unchanged files** with `p4 revert -a` 5. **Check `p4 opened`** before leaving for the day 6. **Use `p4 reconcile`** to catch local changes 7. **Preview with `-n`** before destructive operations 8. **Use exclusive locks** for binary files 9. **Don't submit broken code** - Test first 10. **Keep changelists small** - Easier to review/revert ## Troubleshooting | Issue | Solution | |-------|----------| | "File not on client" | Run `p4 sync` first | | "Can't edit - not synced" | Sync file, then edit | | "Can't clobber writable file" | Use `p4 sync -f` or fix permissions | | "File already open" | Check `p4 opened -a` for who has it | | "Out of date" | Sync and resolve before submit | | "No such file" | Check path, use `p4 files` to verify |
在 GitHub 查看