现在的位置: 首页 > 综合 > 正文

[SCM]源码管理 – perforce的分支与集成

2011年04月19日 ⁄ 综合 ⁄ 共 1402字 ⁄ 字号 评论关闭

 

p4的分支创建和集成过程主要包含4个步骤:

(1) 使用‘p4 branch’创建branch spec;

(2)使用’p4 integrate‘来实现分支间的集成;

(3)使用‘p4 resolve’来完成冲突的合并;

(4)使用‘p4 submit’提交集成的结果。

 

如下为在p4v中的操作。

 

一 创建branch spec

如下过程创建projectA的main与2012RTM的branch spec。操作为new branch mapping。

 

 

二 创建新的分支

如下过程创建2012RTM分支!

 1) 在branch spec上右键 ->integrate using this branch mapping

 

2) 提交集成

 

3)提交后如下

 

 

三 分支间的集成

如下过程为从2012RTM 到 main的集成。

1) 在branch spec上右键 ->integrate using this branch mapping,注意选择正确的集成方向。

 

2) 在有冲突的文件右键->resolve (通常选择accept merged 或者run merge tool手动merge)

 

3) 提交合并

 

 

 

四 p4 integrate 和 p4 resolve的注意事项

1 )p4分支的集成也支持没有branch spec的形式,如 ‘p4 integrate fromfile tofile’,如果没有使用branch spec或fromfile与tofile没有共同的base的时候需要使用-i参数来强制集成。

2)对‘p4 integrate’使用-v参数来避免将integrate的结果自动sync到本地,但是大部分情况我们需要合并,所以需要sync到本地。

3)对‘p4 integrate’使用-r表示与branch spec相反的方向的集成。

4)默认地在‘p4 integrate’命令后本地workspace的文件任然为只读的,如果需要修改则必须先使用‘p4 edit’命令。

5)对‘p4 integrate’命令使用-Dt -Ds,-Dt表示目标文件被删除了,但是源文件还在,则集成结果为源文件; -Ds表示如果源文件删除了,集成结果为任何对之前对目标文件的修改也被删除。

6)在脚本中自动集成时,可以对‘p4 resolve’使用 -am或-as参数,差别为:
-am表示accept merged,具体为如果theirs与base一致,接受yours,如果yours与base一致,接受theirs,如果yours和theirs都与base不同,但是yours和theirs没有冲突,接受自动merged的结果,否则如果yours和theirs也有冲突,则忽略此文件。
-as比-am更严谨,不管yours与theirs是否有冲突,只要yours和theirs都与base有不同就忽略此文件。

7)在使用‘p4 resolve -am’或‘p4 resolve -as’后,可以使用‘p4 resolve -n’来参看没有自动merged忽略的文件,如果有文件没有自动merge成功,则需要手动merge,否则可以直接提交。

 

8) 实例 : 

p4 integrate -b %branchname% -Dt -Ds

 

p4 resolve -am

p4 resolve -n 

 

p4 submit (如果p4 resolve -n 命令检测到没有文件merge失败,则submit可以自动执行,否则需要手动merge,然后再submit)

 

 

完!

 

 

抱歉!评论已关闭.