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。提交前通常创建 numbered 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> # 签出编辑 (类似 git 的东西, P4 文件默认只读)
p4 delete <file> # 标记删除
p4 move <src> <dst> # 移动/重命名 (保留历史)
p4 copy <src> <dst> # 复制 (记录分支来源)
p4 diff <file> # 查看修改 (类似 git diff)
p4 diff -f <file> # 强制 diff (即使文件未 checkout)
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