相对于 Git 和 SVN,Perforce 在管理二进制文件上更方便

本文参考了官网教程

https://www.perforce.com/manuals/p4guide/Content/P4Guide/tutorial.readmefirst.html

Git 用户看这里

Stream Depot 大概可以理解为一个 Git 项目,然后 Stream 就是 Git 里的分支

其中 Stream 必须要依赖于 Stream Depot 存在

安装

https://www.perforce.com/downloads

把服务端和命令行客户端都装上就行了,也可以整图形化界面

Windows 下安装包会自动配置环境变量;并且服务端装完后会自动启动,如果没有的话就用 p4d 命令启动服务端

我们可以在 PowerShell 里输入下面的命令测试一下服务端是否正常

p4 info

创建 Stream Depot

p4 depot -t stream TestDepot

解释一下,这行命令创建了一个名为 TestDepot 的 Stream Depot,-t stream 用于指定这个 Depot 的类型

创建 Stream

Git 中我们通常会开 masterdev 分支

在 Perforce 里我们也可以做同样的操作,使用下面两行命令创建 maindev 两个 Stream

p4 stream -t mainline //TestDepot/main
p4 stream -t development -P //TestDepot/main //TestDepot/dev

解释一下,-t 参数用于指定 Stream 的类型,-P 参数用于指定父 Stream;上面的例子里 main 这个 Stream 是 dev 的父 Stream

需要注意 mainline 类型的 Stream 不能有父 Stream

我们可以使用下面的命令来查看所有的 Stream

p4 streams

创建 Workspace

之前 Stream 相关的操作都是作用在服务端上的

这里我们在本地创建 Workspace

首先设置环境变量 P4CLIENT,这个是 PowerShell 的写法
配环境变量这种操作其实我是觉得挺离谱的

$env:P4CLIENT='hello_client'

然后 cd 到一个空的文件夹,输入以下命令

p4 client -S //TestDepot/main

这样这个文件夹就跟 main 这个 Stream 绑定起来了

添加文件

在这个文件夹里新建一个文件 test_file.txt

p4 add .\test_file.txt
p4 submit -d 'Add a test file'

修改文件

Workspace 里已有的文件通常都是只读的,我们使用下面这行命令修改 test_file.txt 的读写权限

p4 edit .\test_file.txt

然后用编辑器改一下里面的内容

p4 submit -d 'Modify a test file'

删除文件

p4 delete .\test_file.txt
p4 submit -d 'Delete a test file'

需要注意这个只是从服务端把该文件删除,Workspace 里这个文件依然存在

与服务端同步

如果其他人对 Stream 进行了修改并提交到了服务端,我们可以把这些修改同步到本地的 Workspace 里

p4 sync

切换 Stream

我们可以使用下面这个命令查看所有的 Stream

p4 switch -l

然后我们切换到 dev

p4 switch -r dev

合并 Stream

merge 命令只能以父 Stream 为源,子 Stream 为目标

首先 switch 到子 Stream,然后执行下面的命令,会自动从父 Stream 上合并过来

p4 merge
p4 resolve

后面的 resolve 命令是解决两个 Stream 的冲突,不同于 Git 的自动合并,手动合并非常原始,建议使用图形化界面或者编辑器插件

resolve 完了之后记得 submit

p4 submit -d "Merge"