Perforce是目前比较流行的集中式的源代码管理工具,在很多的欧美跨国公司被广泛的使用。他能够运行于Windows,Linux,Mac几乎所有的平台,支持客户端,命令行,IDE集成,操作系统shell,API等多种访问方式。而且他还能够很好地支持大型规模的软件公司的员工同时访问,能够很好地支持跨国的分布式团队的开发。对perforce server的管理也很方便。例如google就在使用perforce来管理源码。
一 Perforce 客户端入门
* 客户端我们可以使用p4命令行,也可以使用基于UI的p4v,同时客户端还带有p4merge用来帮助用户执行diff和merge。
* 客户端我们还可以使用IDE的plugin来在IDE中方便地执行所有的perforce操作,也可以在我们的自动化脚本中调用基于各种语言的API来执行Perforce操作。
* 基本的登录信息,p4v中为server,user,workspace,server表示p4server的地址,user表示user id,workspace表示server与本地的目录的映射关系,在p4命令中,对应的环境变量为p4server,p4user,p4client。
* client表示server与本地的目录的映射,在p4v中为new workspaces... , 对应的p4的命令为p4 client。
* 增加文件在p4v中为mark for add,对应的p4命令为p4 add。
* 删除文件在p4v中为mark for delete,对应的p4命令为p4 delete。
* 修改文件在p4v中为check out,对应的p4命令为p4 edit。
* 提交修改在p4v中为submit,对应的p4命令为p4 submit。
* 同步最新的代码到本地在p4v中为get latest reversion / get reversion ... ,对应的p4命令为p4 sync。
* 每次提交都会对应一个change list,用来唯一标识一次提交。
* 在提交前撤销修改,p4v中为revert unchanged files / revert files ...,对应的p4的命令为p4 revert。
* 在提交后撤销, p4v中为Rollback... ,对应的p4命令其实就是p4 sync + p4 submit。
* 要查看文件或文件夹的版本,在p4v中为file history / folder history, 对应的p4的命令为p4 filelog。
* 要修改文件或移动文件目录,在p4v中为rename / move ..., 对应的p4的命令为p4 move。
* 创建branch需要在p4v中new branch mapping + integrate using branch maping ...,对应的p4命令为p4 branch + p4 integrate。
* merge,在p4v中为resolve files,对应的p4的命令为p4 resolve。
* p4的命令p4 copy,其实是等于p4 integrate + p4 resolve -at。
* 创建label需要在p4v中new label... + label...,对应的p4命令为p4 label + p4 tag。
* 比较client的最新与本地的不同,p4v中为diff against havereversion。 对应的p4的命令为p4 diff。
* 比较任意的两个文件的不同个,p4v中为diff against... ,对应的p4的命令为p4 diff2。
* 查看目录下的文件,p4v中为files in folder,对应的p4的命令为p4 files。
* p4命令p4 info 或 p4 set查看当前的p4 server的和当前client的信息。
* 查看文件的内容对应的p4命令为p4 print。
* p4命令p4 where用来查看一个文件在server,client和本地的路径。
二 Perforce server入门
* Server的运行程序为p4d(如果作为service运行,需要改为p4s)。
* 为了支持分布式团队的开发,需要使用proxy,proxy的运行程序为p4p(如果作为service运行,需要改为p4ps)。
* 可以使用p4server自带的svcinst来在windows上同时部署多个server或proxy。
* p4server在linux上可以部署为daemon(service),或者也可以部署为xinetd的服务来运行。
* 对server的管理可以使用p4admin的UI的工具来完成, 或者使用p4 命令 p4 user + p4 group + p4 protect来进行权限的管理,使用p4 monitor来监视server。
* 使用p4d命令p4d -jc / jr来备份和恢复server。
* 也可以使用p4的命令p4 admin来进行部分的管理,例如停止server,备份server。
* 可以使用p4的命令p4 replicate 或 p4 pull来创建 replicated server,作为热备份server用来实现灾难恢复,或者作为offline server用来减少备份时mainserver的停机时间。
* replicated server + p4broker来实现 p4server的高可用性,或作为readonly server来减少mainserver的负载。