以下是我们的情况:
问题是,我们可以复制到main,但我们无法将这些更改返回到流B,因为“删除流A”更改更新。我们希望我们之前退回的所有更改返回,以及新的更改。
有没有办法做到这一点,而无需手动复制或手动合并所有内容的巨大手动努力?
感谢。
答案 0 :(得分:1)
首先运行p4 changes -i @n,n
,其中n是从main到B的合并的变更列表编号,其中包含您撤消的A更改。这会给你一个更改列表,第一个是n本身,其余的是main需要重新合并到B的更改。但是,你不能使用'p4 merge'来重新合并,而是必须使用'p4 integ -f'。
例如,假设n是1000:
p4 changes -i @1000,1000
Change 1000 ...
Change 994 ...
Change 991 ...
Change 866 ...
这告诉你必须将866,991和994从main重新合并到B.如果你不是在挑剔,你可以假设这些是main中的连续变化,你可以使用866到994作为修订范围:
p4 integ -f -r -S //stream/B @866,994
p4 resolve
p4 submit
(这个整合命令示例假设// stream / main是// stream / B的父亲。当然,你必须在// stream / B工作区中才能做到这一点。为了获得最佳效果,您可能希望确保工作区完全同步,并且在运行集成之前没有打开文件。)
答案 1 :(得分:1)
您可以随时退出已撤消的更改列表。通过这种方式,您可以进行第一次更改。
请记住,所有文件的历史记录都已保存,因此所有更改都应该在像您这样的情况下轻松恢复。
答案 2 :(得分:0)
我不熟悉Perforce流,但传统上Perforce没有任何特殊的退出概念。退出更改只会创建一个反向变更集。
因此,要重新应用已退出的更改,您应该可以退出退出。
答案 3 :(得分:0)
您最近的更改是删除,因此不会将文件重新添加为已经打开的文件以进行删除。在该文件上运行p4还原,然后执行p4添加,它对我有效。