我正在将大型代码库(> 200k 文件)迁移到 perforce 存储库,在此过程中我添加了许多文件夹和文件类型,现在我想使用 p4ignore 忽略它们。我已经在 p4ignore 中设置了正确的过滤器,它将捕获添加或生成的新文件,但我以某种方式需要查找并删除库中已有的文件和文件夹,如果我得到了它,这些文件和文件夹将被 p4ignore 更改忽略就在第一位。
有标准方法可以做到这一点吗?看来这是一个常见问题。
协调离线工作不能做到这一点,已经搜索了可以做到这一点的 p4 命令,但似乎没有。
不幸的是,没有内置命令可以解决这个问题。对于内置的此类东西来说,永久丢失数据的风险会非常高。
为了删除这些文件,您需要对它们运行 obliterate 命令,而不仅仅是将它们标记为删除,这会导致您的工作区尝试从计算机上删除这些文件,并且在使用时会造成很多混乱协调以后的线下工作。
我会推荐您提到的脚本路由,因为听起来手动可能很乏味,除非忽略路径主要由文件夹标识,在这种情况下,手动执行不会那么糟糕。像这样的东西:
p4 obliterate //.../FolderToObliterate/...
或者,如果您想限制在特定的仓库(可能更安全)
p4 obliterate //DepotName/.../FolderToObliterate/...
(这实际上不会删除文件,但会输出将被删除的文件列表,而无需实际执行。在
-y
之后使用 obliterate
再次运行它,以真正永久清除这些文件及其历史记录)