在拥有此repo(最初是SVN)的过程中,我没有将文件链接保持在一起。我已经两次更改了IDE,将项目拆分为Netbeans模块,并将项目随时间化。大多数文件历史都丢失了,主要是因为在mavenizing期间我删除了整个主干,提交,复制了maven项目并提交了。这不是最好的主意,因为我后来发现所有历史记录重置到那一点。它变得如此糟糕,以至于存储库统计程序是无用的,因为它说我有50,000行代码投入而不是~8,000。
有没有办法修复所有损坏的文件历史记录?如果Mercurial不能这样做,我可以访问SVN和Git
答案 0 :(得分:3)
嗯,你完成删除和复制的时间你做得很好hg addremove --similarity 90
说“删除所有已经消失的东西,添加新的东西,如果它们是90%彼此相似的计数是重命名“。
现在已经过去了,没有办法移动一个没有重新编写你的存储库,这会使所有节点ID(哈希值)发生变化时所有克隆无效。如果这没关系并且你有一个很大的线性历史,你可能会得到这样的东西:
hg export --output "../patch-%n.patch" 0:tip # exports every changeset to a patch file
cd ..
hg init newrepo
cd newrepo
hg import --similarity 90 ../patch*
从您的第一次提交到最后一次提交(不包括分支和其他头等)的线性历史记录将它们导出到修补程序,创建一个新的空仓库,并使用重命名检测功能导入更改集。
这是一个相当激烈的行为,所以要确保它真的值得你,并保持旧的回购周围的好。