【问题标题】:delete a submitted changelist from perforce history从 perforce 历史记录中删除提交的变更列表
【发布时间】:2012-10-23 06:04:41
【问题描述】:

我不小心向我的 perforce 服务器提交了错误的更改列表。然后,我使用“backout changelist”选项退出了该更改列表。但是,这两个更改出现在所有受影响文件的历史记录中,它们曾经被删除然后又重新添加。

我希望能够从 perforce 服务器中删除这两个更改列表的历史记录。是否可以。是否可以通过一些 Perforce 管理员命令来完成。

编辑:我看到p4 change -d -f 可以删除更改列表,但这需要对更改列表中的文件使用 p4 obliterate。这是否意味着我必须删除所有受更改列表影响的文件。这对我来说似乎不是一个可行的解决方案,因为我不想删除这些文件。由于两个提交的更改列表,我是否应该只删除文件的这两个特定修订?

【问题讨论】:

    标签: perforce changelist


    【解决方案1】:

    您的 perforce 管理员可以致电 p4 obliterate 以彻底清除文件、修订版和历史记录。 但我强烈建议不要这样做。回滚文件/更改并查看其历史记录是非常正常的事情。

    如果您仍然决定使用p4 obliterate,请确保首先调用它而不使用“-y”选项(预览版),然后(如果 perforce 所说的输出正常)调用相同的命令“-y”选项(实际执行删除)。

    如果您使用文件修订(例如p4 obliterate //depot/dir/file#5)调用p4 obliterate,则只会删除该修订的更改和历史记录,而保留所有先前的修订和历史记录。您还可以删除修订范围。

    【讨论】:

    • 实际上,错误的更改列表几乎影响了每个文件,因此几乎所有文件的历史记录都已损坏。这就是为什么我不希望出现回滚。我是否必须为受影响文件的所有修订或仅这两个特定修订调用“p4 obliterate”(由于这两个有问题的更改列表)
    • 恕我直言,没有回滚证明调用“p4 obliterate”是合理的。这是完全正常的事情。如果您仍然认为需要它,则必须为更改列表中的所有文件调用“p4 obliterate file#rev”。添加“-y”选项以真正做到这一点(留下“-y”只是运行测试)。
    • 非常感谢您的帮助。我知道做“p4 obliterate”可能看起来不合逻辑,但我仍然想这样做。那么,我只需要删除由于错误的更改列表而引入的文件的修订版,而不是删除整个文件?我理解正确吗?我要求它只是为了确认。
    • 是的。 "p4 obliterate -y //depot/dir/file#5" 只会删除文件的修订版 5(保留修订版 1-4)。 #5 的历史将会消失(包括引入它的变更列表)。您应该运行不带“-y”的命令进行测试!确保不存在“#6”(比您要删除的版本更新的版本)。 obliterate 命令可能会稍微阻塞您的服务器(即提交可能需要更长的时间)。
    • 谢谢。我已经接受了你的回答。请对其进行编辑以包含 cmets 中提供的信息。
    猜你喜欢
    • 2023-01-22
    • 2014-11-20
    • 2014-06-24
    • 1970-01-01
    • 2012-12-14
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多