Perforce 客户端丢失硬盘上的文件

Perforce client missing files that are on the HDD

我在 perforce depot 的文件结构中有很多文件,即使以管理员身份登录,我也无法使用 perforce 客户端 p4 命令行或 p4v gui 查看这些文件。

我试图通过 p4 文件和 p4 文件日志命令找到任何我能找到的元数据,但它总是 returns:

"- 没有这样的文件。"

我也有 运行 p4 verify 和 p4 dbverify 来查看服务器上是否有任何错误,但它们没有返回任何错误。除了文件占用硬盘空间这一事实外,似乎没有文件记录。

我目前的理论是它们来自失败的提交,但我不知道如何强制确认这些文件,以便我可以删除它们。

背景资料:

服务器的软件仓库文件系统中的内容与元数据中定义的软件仓库的实际结构之间不一定存在一对一的映射——软件仓库修订只写一次,甚至不会移动或复制如果从客户的角度来看它们被移动或复制了。所以你绝对不应该假设因为仓库文件系统中的给定文件不对应于仓库文件路径,所以它实际上并没有为其他一些现有文件提供底层存储(特别是如果你已经对某些文件使用了 obliterate一个文件的分支,同时保留其他文件的完整 - 剩余的存档文件可能是您留下的其中一个文件的内容)。

也就是说,如您所建议的,存档也有可能成为 "orphaned" 作为提交失败的一部分。如果涉及的 space 数量很小,我建议不要担心它(孤立文件不会在冲突方面造成任何问题),但如果能够清理它们很重要,你最好打赌是使用 "snap -n" 来确保没有任何这些依赖关系,然后手动删除它们(为了安全起见,我至少会保留它们的备份,直到你 运行 你的接下来验证以确保没有重要的东西丢失)。 运行:

p4 snap -n //... //depot/path/to/mystery/file

这表示 "show me files anywhere in the depot (//...) with archive dependencies on //depot/path/to/mystery/file"。如果你 运行 命令没有 -n 它实际上会通过制作物理副本来打破这些依赖关系(如果你担心 space 就不要这样做,因为你最终会得到存档的 N 个冗余副本)。

p4 snap -n 的倒数(即 "where does the archive for this depot file live?")是 p4 fstat -Oc //depot/file