在Perforce中,如何重新添加在回退期间删除的文件?

时间:2012-09-12 20:29:37

标签: perforce

以下是我们的情况:

  • 我们将流A的内容复制到main。
  • ,这是对我们的安全基础架构的更改
  • 然后我们将内容合并到流B中。
  • 然后我们在B流中做了一些其他不相关的更改。
  • 然后我们意识到来自A流的变化并没有像我们想象的那样好,我们决定退出以保证安全。
  • 我们撤销了包含来自流A的更新的修订。
  • 这样可以删除部分文件并更改其他文件。
  • 我们测试了没有流A的变化,一切正常。
  • 与此同时,开发人员在流A中进行了一些小改动,我们准备将流A合并回流B.

问题是,我们可以复制到main,但我们无法将这些更改返回到流B,因为“删除流A”更改更新。我们希望我们之前退回的所有更改返回,以及新的更改。

有没有办法做到这一点,而无需手动复制或手动合并所有内容的巨大手动努力?

感谢。

4 个答案:

答案 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添加,它对我有效。