Perforce:将包含具有不同修订版本的相同文件的多个变更列表集成到分支

问题描述 投票:0回答:1

总共有 10 个变更列表 10006, 10009, ... 10089 属于分支 1 中的新功能,我想将该功能合并到分支 2 中。

如下所示,许多更改列表包含具有不同修订版本的相同文件。

变更列表 10006 包含文件:ClosedLoop.cs(#5)、C(#2)、D.cpp(#2)、K(#3)
更改列表 10009 包含文件:D.cpp(#7)、E(#6)、H(#2)、M(#5)、Z(#2)
...
changelist10089 包含文件:ClosedLoop.cs(#8)、U(#7)、I(#9)

我选择所有 10 个变更列表进行合并,因为每个列表中都包含一些独特的文件。 (如10006中的文件C和K,10089中的文件U和I)

问题
Perforce 使用旧版本 (ClosedLoop.cs rev. 5) 而不是新版本 (ClosedLoop.cs rev. 8) 进行合并。 Perforce 使用 ClosedLoop.cs 修订版 5 和 8 进行合并,而不仅仅是最新版本(修订版 8)

详情
我按照步骤合并视频中分支之间的文件 (https://www.youtube.com/watch?v=6hCPZPl68ng)。
在合并/集成对话框中,我执行以下步骤:
1. 选择“过滤器”选项卡
2.勾选“精选的chagelists”
3. 从列表中检查多个更改列表。选定的更改列表包含具有不同修订版本的相同文件。 如下所示, changelist 10006 包含修订版 5 中的 ClosedLoop.cs,changelist 10089 包含修订版 8 中的相同文件

enter image description here

  1. 点击预览按钮,显示

enter image description here

  1. 单击合并按钮
问题是 **Perforce 使用旧版本(版本 5)进行合并,而不是新版本(版本 8)**,如下所示。
**如下所示,Perforce** **不允许我在下面的解决对话框中选择版本 8 进行合并**。

Perforce 使用 ClosedLoop.cs 修订版 5 和 8 进行合并。

enter image description here

perforce p4v
1个回答
2
投票

通过单独指定每个变更列表,您可以为每个变更列表设置合并,该合并仅包含该变更列表中的特定更改。 为 #5 和 #8 安排了单独的合并,因为每次合并只会带来该特定修订版中所做的更改 - 因此,如果您要跳过 #5 合并而只执行 #8 合并,您将不会得到#5 中所做的更改(即使这些更改存在于内容 #8 中,如果您指定只需要 #8,合并将尝试排除它们,就像排除 #6 和 #7 一样)。

您可能想要做的正是 Perforce 为您设置的操作——合并 #5,然后合并 #8。 每次合并都会将一个变更列表的编辑内容带入目标文件中,完成这两项操作后,您将拥有这两个变更列表,但不会拥有中间的变更列表。

这篇知识库文章介绍了这种类型的“樱桃选择”合并的机制:https://portal.perforce.com/s/article/3385

如果您不想对每个文件进行多次合并,则可以通过指定范围将所有内容作为单个集成进行,例如:

p4 集成分支1/...@10006,10089 分支2/...

但是当然这将包括branch1上该范围内的所有变更列表。 进行单独的樱桃采摘合并(这是您已经设置的)是获得这些特定更改的唯一方法,仅此而已。

© www.soinside.com 2019 - 2024. All rights reserved.