从svn repo中检出每个版本并使用散列提交者ID提交到新的repo

问题描述 投票:0回答:2

我一直在努力找出将大型svn存储库复制到新的svn或git存储库的最佳方法,包括所有原始版本和元数据(时间戳,提交注释等),除了,我想采用提交者字段在日志中并散列它。这是因为我将分析日志并且需要使提交者名称变得模糊,但也可以彼此识别(即,我不能仅删除它们或将它们更改为“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 hash git-svn
2个回答
0
投票

git svn有两种方法可以破坏SVN作者的名字:--authors-file--authors-prog。后者允许您提供将为每个未知作者调用的脚本,您可以返回哈希值。该脚本可以计算哈希值,输出哈希值(请参阅链接文档以获取预期响应格式的详细信息)并将该映射存储在其他文件中。

这样你就不需要自己解析svn中的作者了 - git svn会为你做这件事。


0
投票

这是我在转换我的存储库时用来获取作者的1-liner:

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
© www.soinside.com 2019 - 2024. All rights reserved.