1

所以,情况就是这样。我有 2 个流,“Development.Main”和“Development.A”(Development.Main 的子级)。我将只关注一个文件通过我执行的“版本控制”步骤所采用的“路径”。

  1. 该文件以 Main 开头。
  2. 我将它合并到 A 没有任何变化。
  3. 我在 Main 中删除它。
  4. 当我将 Main 中的更改合并到 A 时,我选择“保留目标”,以便该文件在 A 中保持未删除,因为我希望该文件在 Main 中删除,而不是在 A 中
  5. 但是随后 Perforce 流图告诉我,我有文件要从 A 复制到 Main(见绿色箭头)。当我进行复制操作(从 A 到 Main)时,它想将文件复制回 Main,从而重新生成它。但我希望它保持被删除。请注意,当我尝试强制从 A 到 Main 的合并(而不是副本)时,Perforce 认为没有要合并的内容并决定以错误响应。见下面的图片#3

1 - 流程图

流图

2 - 修订图

修订图

3 - 试图强制从 A 合并到 Main

尝试强制合并时出错

我该如何解决这种情况,以便我可以删除 Main 中的文件而不是 A 中的文件?

解决方案的条件:

  1. 我希望流程图上的所有绿色箭头都消失。
  2. 从现在开始,我不希望这个文件出现在 Copy (from A to Main) 操作中。(因为我不希望这个文件再次出现在 Main 中。它应该在那里被删除。)
  3. 我不想仅针对此特定文件更改有关流规范或工作区规范的任何内容。
4

1 回答 1

2

有两种方法可以做到这一点:

选项一(通用解决方案):

永远不要copy在这两个流之间进行操作。合并/复制工作流程“忽略”更改的想法不兼容,因为只要您强制两个流相同,而不管以前忽略了什么。copy

幸运的是,流有一个mergeany选项允许您选择退出合并/复制工作流,因此您可以改为合并/合并,而不必-F每次都使用 (force) 标志——这是流存在之前的标准 Perforce 工作流。当 you 时merge,以前“忽略”的修订将不会被合并,本身作为反向“忽略”产品的修订也不会被合并(即,如果您正在执行合并,您忽略的删除将不会作为添加重新传播)。

此处更详细地描述了以这种方式“忽略”分支/删除操作的能力(再次注意,这仅适用于merge/ integrate,而不适用于copy):https ://web.archive.org/web/20141020052100/http:/ /www.perforce.com:80/blog/110620/ignoring-branches-deletes

选项二(仅适用于整个文件):

由于这是您不想传播的整个文件,而不是特定修订版,因此您可以isolateDevelopment.A. Paths这会将其从集成视图中删除,这样对该文件所做的任何更改都不会传播(无论您是在合并还是复制,都不会传播)。从 的角度来看copy,此文件不再是您的流的一部分。

于 2019-12-11T15:59:04.587 回答