P4V 基本操作
November 8, 2024About 4 min
P4V 基本操作
P4V 是 P4 的图形客户端。这篇记从登录、建 workspace 到日常各项操作的含义,基于 v2018.4,后续版本界面略有出入但概念一致。
登录与建 workspace
- 打开 P4V,填服务器地址
<P4SERVER>:1666、端口和用户名。 - 新建 workspace(首次登录要新建 workspace 并输入密码)。
标准 Depot:
- 设 workspace 名。
- 设本地 workspace 路径(在这里干活)。
- 设 workspace 映射(包含你需要的文件夹)。不清楚 depot 的 view 结构时,点对应图标把 view 以树形展开,再选择 Include / Exclude / Clear 各个目录。
Stream depot:前两步同上,第三步选你要工作的 stream,然后 OK。
建好 workspace 后点 OK 登录。
各项操作的含义
Sync(同步资源)
- Get Latest Revision:从 depot 拿最新版本文件。
- Get Revision:拿你需要的特定版本。
Check out(签出待改文件)
- 在 client workspace 里打开文件以供编辑,文件关联到一个 changelist,但在 changelist 提交前 depot 里的文件不会真的改变。
- P4 默认不阻止你打开别人已打开的文件——默认允许多人同时编辑,之后用 resolve 解冲突。
- 想阻止别人在你打开的文件上工作,可以用 lock:允许别人编辑,但在你先提交之前不让他们提交。
Mark for Add(标记新增)
- 把 workspace 里的文件标记为新增到 depot。这些文件要么 depot 里没有,要么 depot 里存在但在 head revision 被标记为删除。
Mark for Delete(标记删除)
- 标记从 depot 删除。文件会立刻从 client workspace 移除,但在对应 changelist 提交前不会从 depot 删除。
Submit(提交)
- 文件被 add / edit / delete / integrate 打开后,会列在 pending list 里。
- 文件改动只在 workspace 副本里,直到 changelist 被 submit 送进 depot。
Revert(还原)
- 丢弃对已打开文件的改动,回到上次从 depot 同步的版本,并把它们从所在 pending changelist 移除。
- 对标记为 delete 的文件 revert,文件会在 workspace 里恢复。
- 对标记为 add 的文件 revert,workspace 里的文件原样保留(只是不再被跟踪)。
Resolve(解冲突)
- 合并两个文件或两个 revision 的内容。
- 当存在简单冲突时(你上次同步到 workspace 的 revision 在提交时已不是 head revision)就需要 resolve。
Reconcile Offline Work(对账离线改动)
- 如果因故离线工作(没连 server、没 checkout),可以手动给文件开写权限,继续编辑/增/删,之后用 reconcile 把这些改动加到选定 changelist。
- 给 workspace 设 Modtime 选项可以加速 reconcile。
Shelve(暂存)
- 把已打开文件的副本临时存到共享的 Helix Server 仓库,不签入。
- 要 shelve 必须先 checkout;但不能 unshelve 一个已 checkout 的文件。
- 可以直接 submit 一个 shelved 文件。
- 不能把 shelved 副本移到另一个 pending changelist。
- shelve / unshelve 不产生文件历史。
- 可以像 diff 普通文件一样 diff shelved 副本。
Lock(锁)
- 文件锁:阻止别的 client 提交被锁文件,用
p4 unlock或提交含锁文件的 changelist 来解锁。 - 数据库锁:阻止别的进程改
db.*数据库文件。
Merge / Integrate
- 指定 source 和 target 文件,或选 branch mapping。
- Stream 间:在 Streams 标签右键目标 stream 选 Merge/Integrate,或双击选 Merge changes。merge down / copy up 时必须工作在目标 stream。
Branch(建分支)
- branch 一条 codeline 或 stream,就是建一份与源通过集成历史关联的副本。
- 选源文件夹/文件右键 Branch,在 target 字段填要创建的分支(注意:如果 target 已存在,那是 merge/integrate 而非 branch)。
- 配好选项点 Branch,文件以 branch 状态打开在 pending changelist 里。选了 auto-submit 就立即提交,选 add to pending changelist 就等你 ready 再提交。
Clean(清理)
- 清掉不受 Helix Server 管理的文件,或把 workspace 文件还原到与 depot 一致。
- **Clean 操作不可逆。**选文件夹
Actions > Clean或右键 Clean,P4V 会比对 workspace 与 depot,列出:本地改了但没 checkout 的文件、本地有但 depot 没有的文件、depot 有但本地缺的文件。 - 默认全选清理,不想清的取消勾选;P4IGNORE 里列的文件默认排除在清理外。确认后点 Clean。
Label(标签)
- 一组用户指定的文件 revision 的命名列表。
同步到指定版本
P4V 里在文件/文件夹右键 Get Revision,选 "Specify revision" 填 revision 号再 Get Revision。命令行:
p4 sync //depot/...@123
查某个 client 当前同步到的最高 changelist:
p4 -c <clientname> changes -m1 //...#have
在 P4V 里也可以对目标文件夹右键 "Open Command Window Here",再执行上面的命令,输出里的数字就是该 client 的最高 changelist。