首页 > 解决方案 > Perforce:修复破碎的历史

问题描述

我有一组文件,有人打算集成,但不小心只是“添加”,丢失了所有历史记录。

不幸的是,这发生在很久以前,所以像延时视图和历史这样的东西在那个副本上结束。

有没有办法修复这个错误?我可以以某种方式告诉 Perforce“这个更改实际上是这个文件在这个更改列表中的集成”吗?

标签: perforcehistory

解决方案


追溯执行此操作的唯一方法是通过检查点黑客攻击——您需要合成“添加自”db.integed记录。

https://www.perforce.com/perforce/doc.current/schema/#db.integed

随着检查点黑客的进行,这相对容易,因为您只需要添加到一个表(可以将“添加”记录挂在现有的“添加”版本中),但是您需要对 Perforce 的p4d -j*命令和 Perforce 的数据模型非常熟悉. 请注意,为了保持一致性,您需要“添加自”和“添加到”记录(其中一个与另一个相反)。

如果您完全不熟悉它,那么熟悉它的工作原理的最简单方法是启动测试服务器,通过执行以下操作创建“添加自”记录:

echo asdf > foo
p4 add foo
p4 submit -d "add"
p4 integ foo bar
p4 add bar
p4 submit -d "add from"

然后取一个检查点 ( ) 并查看检​​查点文件,特别是和p4d -jc之间的关系。这一切都非常简单,您可以应用相同的逻辑来合成您在真实仓库中添加的文件的记录(然后使用将您的黑客日志应用到实际数据库)。db.revdb.integeddb.integedp4d -jr


推荐阅读