【发布时间】:2021-12-06 19:56:17
【问题描述】:
我正在使用 perforce,并且正在将父流合并到子流中。子流包含父流没有(也不应该)的文件。当我合并时,它告诉我删除子文件中的那些文件(可能是因为它们在父文件中不存在)。
我怎样才能告诉它停止这样做?在过去的合并中,我刚刚恢复了删除,但现在它成为了一个问题,因为我试图从子级复制备份到父级,它给我一个警告,指出目标中有未完成的更改。
【问题讨论】:
我正在使用 perforce,并且正在将父流合并到子流中。子流包含父流没有(也不应该)的文件。当我合并时,它告诉我删除子文件中的那些文件(可能是因为它们在父文件中不存在)。
我怎样才能告诉它停止这样做?在过去的合并中,我刚刚恢复了删除,但现在它成为了一个问题,因为我试图从子级复制备份到父级,它给我一个警告,指出目标中有未完成的更改。
【问题讨论】:
我正在使用 perforce,并且正在将父流合并到子流中。子流包含父流没有(也不应该)的文件。当我合并时,它告诉我删除子文件中的那些文件(可能是因为它们在父文件中不存在)。
无法从不存在的来源合并文件。启用“显示已删除文件”选项,我怀疑您会看到父文件中存在(ed)文件并已被删除。 (也许他们被错误地添加了,随后是deleted,而不是来自流的obliterated 或excluded?)合并操作希望将该删除传播到孩子。
我怎样才能让它停止这样做?
如果您希望在解析期间保持目标不变,而不是接受来自源的更改,请选择“保持目标不变”选项。 (这对应于命令行中的“接受你的”选项。)这会将源(在本例中为已删除的修订版)标记为已“忽略”,并且在您 submit 之后忽略修订版(即 integrate带有ignored 解决操作的修订版)在将新修订版提交给源之前,它永远不会再次合并。如果您只是还原文件,则不会记录任何内容,因此源版本将在下次保持未完成状态。
如果这些文件完全不应该存在于父流中,则应更新流规范以反映 -- exclude 它们来自父流,或 isolate 它们在子流中。
【讨论】:
Accept target,而不是想要删除文件,它似乎想要更新它们(它说“标记为集成”)。当我区分它们时,它说“文件是相同的”。那么有没有更永久的解决方法呢?我对obliterate 命令没有任何经验,但是如果我们从服务器中删除已删除的文件(假设这是可能的),那会解决这个问题吗?
这是核心 Helix/Perforce 源代码控制数据模型中的几个基本缺陷之一,并在许多情况下造成重大数据丢失。
看来您必须合并或复制所有“删除文件”记录才能安全地添加任何同名文件。这意味着所有流必须将删除(或重命名)更改合并/复制到其中,任何流才能安全地添加(或重命名)旧名称的文件。
P4V 版本 2021.3 声称增加了一些保护,但它是有限的,不会涵盖 OP 的情况。
此外,如果您的 Helix 服务器在 Windows 上,那么这是不区分大小写的(即使保留了文件名大小写)
【讨论】: