结帐来自SVN Repo的每个版本,并使用Hashed Committter ID进行新的存储库



我一直在努力解决将大型SVN存储库复制到新的SVN或GIT存储库的最佳方法,并使用所有原始修订版和META数据(时间戳记,提交评论)等)除了,我想在日志中获取委员会字段并进行哈希。这是因为我将分析日志,并且需要掩盖的参数名称,但也可以互相识别(即。我不能只是将它们删除或将它们更改为" x")。

到目前为止,我试图做几种方法,但我正在努力使它工作。

我考虑的一种方法是循环循环

get current svn revision
print log
take all fields & use as input to git commit |
pass committer id through sha1sum first
git commit
revision = current revision -1

我还研究了git-svn,并意识到我可以创建一个作者文件来重命名所有作者。但是我不知道如何自动从SVN日志中返回所有作者并将其放入作者文件中。在这种情况下,每个作者的手动输入不是可行的解决方案。

有人可以建议我如何最好地做到这一点吗?

git svn具有杂交SVN作者名称的两个方法:--authors-file--authors-prog。稍后允许您提供一个脚本,该脚本将为每个未知作者拨打,您可以返回您的哈希。该脚本可以计算哈希,输出哈希(有关预期响应格式的详细信息,请参见链接的文档),然后将映射存储在附加文件中。

这样,您就无需为自己解析SVN的作者-git svn会为您做到这一点。

这是我在转换时用来获得作者的1条线存储库:

svn log --xml "$svn-url" | grep -F author | sort -u | sed 's/^<[^>]+>(.+)<.+>$/1 = /' >>authors.txt

然后您可以编辑authors.txt并用哈希替换每个作者身份标识。那是而是

author1 = Name1 <Email1>
author2 = Name2 <Email2>

你想要

author1 = Hash1
author2 = Hash2

最新更新