5

我在 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 这样做,而不必手动查看每个文件并选择要合并的修订?也许分支策略不合适?我还应该做什么?

4

3 回答 3

2

当您尝试从 1.1 分支集成修订版 3 时,Perforce 只会告诉您它正在集成该特定分支上的更改——但修订版 1 已经包含主干修订版 101 和 102。合并时,Perforce 会将主干修订版 100 识别为通用解决冲突的祖先。

根据我的经验,您尝试进行的集成应该只是工作。您是否看到集成源中缺少更改(不能通过不正确的冲突解决来解释),或者您只是查看 的输出p4 interchanges

于 2010-10-12T15:26:36.480 回答
2

我强烈建议尝试将客户的更改合并到主干中。当客户想要升级到 2.0 + 他们的自定义更改几个月后,这将继续成为维护的噩梦。

如果您不希望客户更改反映在您的主项目中,请花时间重构代码,以便您可以使用构建标志或构建配置文件公开客户所需的行为。在 CI 中运行这两种构建配置,以确保未来的更改不会破坏客户的构建。

于 2010-10-15T18:40:26.457 回答
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
于 2010-10-12T11:32:30.613 回答