【问题标题】:Perforce stream merge wants to delete filesPerforce 流合并想要删除文件
【发布时间】:2021-12-06 19:56:17
【问题描述】:

我正在使用 perforce,并且正在将父流合并到子流中。子流包含父流没有(也不应该)的文件。当我合并时,它告诉我删除子文件中的那些文件(可能是因为它们在父文件中不存在)。

我怎样才能告诉它停止这样做?在过去的合并中,我刚刚恢复了删除,但现在它成为了一个问题,因为我试图从子级复制备份到父级,它给我一个警告,指出目标中有未完成的更改。

【问题讨论】:

    标签: stream perforce


    【解决方案1】:

    我正在使用 perforce,并且正在将父流合并到子流中。子流包含父流没有(也不应该)的文件。当我合并时,它告诉我删除子文件中的那些文件(可能是因为它们在父文件中不存在)。

    无法从不存在的来源合并文件。启用“显示已删除文件”选项,我怀疑您会看到父文件中存在(ed)文件并已被删除。 (也许他们被错误地添加了,随后是deleted,而不是来自流的obliterated 或excluded?)合并操作希望将该删除传播到孩子。

    我怎样才能让它停止这样做?

    如果您希望在解析期间保持目标不变,而不是接受来自源的更改,请选择“保持目标不变”选项。 (这对应于命令行中的“接受你的”选项。)这会将源(在本例中为已删除的修订版)标记为已“忽略”,并且在您 submit 之后忽略修订版(即 integrate带有ignored 解决操作的修订版)在将新修订版提交给源之前,它永远不会再次合并。如果您只是还原文件,则不会记录任何内容,因此源版本将在下次保持未完成状态。

    如果这些文件完全不应该存在于父流中,则应更新流规范以反映 -- exclude 它们来自父流,或 isolate 它们在子流中。

    【讨论】:

    • 你是对的。看起来在最初创建父流时,这些文件确实存在,但后来被删除。谢谢你抓住那个。我尝试在解析时使用Accept target,而不是想要删除文件,它似乎想要更新它们(它说“标记为集成”)。当我区分它们时,它说“文件是相同的”。那么有没有更永久的解决方法呢?我对obliterate 命令没有任何经验,但是如果我们从服务器中删除已删除的文件(假设这是可能的),那会解决这个问题吗?
    • 你快到了!只需提交这些集成,现在就可以永久修复了。
    【解决方案2】:

    这是核心 Helix/Perforce 源代码控制数据模型中的几个基本缺陷之一,并在许多情况下造成重大数据丢失。

    看来您必须合并或复制所有“删除文件”记录才能安全地添加任何同名文件。这意味着所有流必须将删除(或重命名)更改合并/复制到其中,任何流才能安全地添加(或重命名)旧名称的文件。

    P4V 版本 2021.3 声称增加了一些保护,但它是有限的,不会涵盖 OP 的情况。

    此外,如果您的 Helix 服务器在 Windows 上,那么这是不区分大小写的(即使保留了文件名大小写)

    【讨论】:

      猜你喜欢
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多