0

我维持着一个分支家族,.../base/..., .../base-staging/..., .../base-production/.... 更改通常是在内部进行base、审查,然后集成到base-staging并最终集成到base-production. 在集成之前,我通常会p4 interchanges确认只有预期的更改才会继续进行。

通常这是有效的。但有时会p4 integrate提取未列出的文件和更改p4 interchanges。根据我的理解,这不应该发生!我有什么误解?

细节:

  1. 古代历史:
    1. 创造.../base/...
    2. p4 integrate base/... base-staging/...
    3. p4 integrate base/... base-production/...
  2. 做出改变.../base/...submit
  3. p4 interchanges base/... base-staging/...
    1. 审查和批准
  4. p4 integrate base/... base-staging/...
    1. 哇!这些其他列出的文件是什么???
    2. 评论:真正的改变,早在我的interchanges命令之前就做出了,但其中没有提到
4

1 回答 1

0

我假设我们谈论的是一个相对较新的服务器版本——在旧版本中,“交换”确实会与“集成”列表完全匹配,但在新版本中,它们会有所不同,以解决细微不同的常见问题两个命令的用例。

“集成”的功能之一是记录历史,以确保未来的集成以可预测的方式运行。在某些极端情况下,这意味着打开文件进行集成,即使不需要将实际更改传播到目标,以便可以记录文件是最新的。一个非常简单的示例:在 A 中进行更改,从 A 到 B 忽略,从 B 到 C 合并,现在将 A 到 C 合并。您的期望通常是集成是“传递的”,因此如果 A->B 没有报告任何内容do 和 B->C 报告无事可做,然后 A->C 将报告无事可做;但是,如果 B->C 合并跳过更改,因为它是“忽略”,那么 A->C 合并没有记录表明曾经尝试过 B->C 合并,并且它将传播更改,

然而,“Interchanges”不记录任何历史记录,并且通常希望将其范围限制为仅报告目标中不存在的源更改。因此,它被调整为产生比运行“集成”更小的更改集。从“交换”中​​排除但包含在“集成”中的更改通常不会严格要求合并,但如果它们也包含在内,这可能会使合并“必需”更改变得更容易。

在“集成”上使用“-Rs”标志将使其模仿“交换”行为并选择绝对最小的源修订集。这篇旧博客文章从它被引入时就对其进行了简要描述:

http://www.perforce.com/blog/101206/p4-integ-3-exciting-things-afoot

于 2014-07-03T15:23:06.333 回答