我在Perforce存储库中有以下分支情况:主线“主干”和两个发布分支“1.0”和“1.1”。具有客户特定变化的分支“客户”已经从1.0分支分支出来。现在,客户希望转向1.1版。如何将1.1分支合并到客户分支?客户特定的更改应保持在1.1的“顶部”。
以下是一个受影响文件的图表:
1.1 -(1)---(2)---(3)
/ \ \
/ \ \
trunk 100--(101)-(102)--103---104---105---106---107
\
\
1.0 ---1-----2--...
\
\
customer ---1-----2----*3*
我正在查看的文件的当前版本是客户分支上的第3版。
如果我选择将分支“1.1”与目标“客户”集成,我会发现两者的共同祖先(主线上的修订版100)以及从那里导致1.1分支的尖端的所有修订都被合并(括号中的那些)。
而Perforce仅提供合并1.1分支的修订版1到3,但由于它错过了之前在主线上发生的必要更改而失败了。
如何在不必手动查看每个文件并选择要合并的修订版的情况下说服Perforce执行此操作?也许分支策略不合适?我还应该做什么?
答案 0 :(得分:2)
当您尝试从1.1分支集成修订版3时,Perforce将只告诉您它正在集成该特定分支上的更改 - 但修订版1已包含主干修订版101和102.合并时,Perforce将识别主干修订版100作为解决冲突的共同祖先。
根据我的经验,您尝试进行的集成应该是Just Work。您是否看到集成源中缺少更改(无法通过不正确的冲突解决方案解释),或者您只是查看p4 interchanges
的输出?
答案 1 :(得分:2)
我强烈建议尝试将客户的更改合并到主干中。当客户想要升级到2.0 +他们的自定义更改几个月后,它将继续成为维护的噩梦。
如果您不希望客户更改反映在主项目中,请花时间重新构建代码,以便您可以使用构建标记或构建配置文件公开客户所需的行为。在CI中运行两种构建配置,以确保未来的更改不会破坏客户的构建。
答案 2 :(得分:0)
为了简化集成,我将创建一个特定的分支trunk_to_custer和1.1_to_customer,然后发出:
cd customer-workspace
p4 integ -b trunk_to_customer @change-number-at-which-1.1-was-branched
p4 resolve
也许这是中间提交,然后是
p4 integ -b 1.1_to_customer
p4 resolve
p4 submit