如何 obliterate/modify 更改列表,特别是 Perforce/Helix 工作区

How to obliterate/modify changelists in particular Perforce/Helix workspace

由于法律问题,我们不得不从 Helix/Perforce 存储库中删除整个项目。

我们部分成功了,所有过去版本的文件都不见了,depots 也不见了。

但是,工作区和所有关联的更改列表仍然存在(P4V > 查看 > 已提交的更改列表)。

更改列表正确显示没有与之关联的文件(因为我们删除了它们),但更改列表描述仍然完好无损,我们也需要删除那些(它们包含合法的 "important" 信息,所以我们需要它们永久消失,期间)。

现在我的问题 -- 有没有办法:

1) 删除工作区以及与删除的仓库和工作区相关的所有更改列表?

2) 如果没有,有没有办法编写脚本,以便我们可以清除已删除的 depots/workspaces 下的更改列表的所有描述?有数以千计的变更列表需要修改,因此手动工作是不可能的。

非常感谢。

好的,我研究了 Helix 文档并提出了一个脚本解决方案。如果有人遇到同样的问题,我将在下面发布解决此问题的步骤:

0) 这要求您要删除的所有更改列表都预先删除与更改列表关联的所有文件。如果您还没有这样做,请使用 p4 obliterate 从软件仓库中删除文件。

1) 在具有管理员权限的命令提示符下,运行: p4 changes -c the-name-of-your-workspace >c:\prune.bat

2) 在具有正则表达式 (regex) 的文本编辑器中打开文件 c:\prune.bat。

3) 使用正则表达式,将所有出现的字符串“Change”替换为“p4 change -f -d”(没有当然是双引号)。

4) 将所有匹配“on 2.*$”的字符串替换为空字符串(删除该行的剩余部分,直到其结束)。注意:搜索正则表达式模式中的数字 2 匹配 2000-2019 年及以后的第一位数字。如果您在 2000 年之前有更改,请使用数字 1。

5) 检查你的批处理文件,它应该包含如下内容:

p4 change -f -d 2083 p4 change -f -d 2074 p4 change -f -d 2073 p4 change -f -d 2072 p4 change -f -d 2071

6) 运行 您从具有管理员权限的命令提示符批处理。

尽情享受吧。希望这有帮助。

这是一个适用于任何平台的简单的单行解决方案:

p4 -Ztag -F "change -df %change%" changes -c CLIENT | p4 -x - run

如果想法是摆脱所有文件已被删除的更改列表(即所有空的更改列表),那么您可以放弃 -c CLIENTchange -df 命令将跳过文件未被删除的更改,因此只需 运行 它就可以覆盖所有更改。