[英]svn to git conversion (how to check the repository quality)
目前我正计划为开源项目提供相当大的git转换。 存储库非常大,因此试验和错误很慢(超过60,000次提交)。
关于如何进行git转换有很多问题,但几乎没有关于如何检查转换是否有效的细节。
当然,有一些基础知识,比如在repos中设置修订版和比较存储库的内容,但历史,提交消息......移动文件,跟踪分支之间的更改等 - 变得更加复杂。
所以我的问题是:
注意 :目前我们正在使用reposurgeon但是应该没有答案,但这确实意味着我们必须进行一次性转换并获得正确的权利 。
如果您使用git-svn插件,您可以使用本地git客户端克隆您的SVN存储库,该客户端可以有效地创建完整历史记录的Git存储库。 这不仅非常容易且超级快,而且您可以相信您与现有的svn repo正确同步,甚至可以拉出初始克隆后可能发生的更改。
至于需要注意的事项,git不会跟踪空文件夹。 另一个问题是处理二进制文件,你希望它们不存储在你现有的仓库中。 你不想通常在git仓库中存储大型二进制文件。 有一些git特定的解决方案,你可以google但如果你通过克隆svn repo拉它们可能会很棘手。
这不是一个明确的答案,只是我们一直在做的一些事情来检查git转换是否正常。
找到所有3个以上父母的提交,这些提交的可能性很小,尽管可能有例外情况。
git log --all --min-parents=3
查找具有重复父项的所有提交。 请注意,运行git filter-branch之后可以清除它们,但这有时可能是一个非常缓慢的过程。
git log --all --min-parents=2 --format="format:%H: %P" | egrep ':[^:]* ([0-9a-f]+) [^:]*\1'
找到所有不合并的提交,不要更改任何文件(可能是svn props更改):
git log --all --max-parents=1 --format="format:%H" --shortstat | pcregrep -v -M "^[a-z0-9]+\n "
感谢Julien Rivaud的正则表达式命令!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.