繁体   English   中英

svn到git转换(如何检查存储库质量)

[英]svn to git conversion (how to check the repository quality)

目前我正计划为开源项目提供相当大的git转换。 存储库非常大,因此试验和错误很慢(超过60,000次提交)。

关于如何进行git转换有很多问题,但几乎没有关于如何检查转换是否有效的细节。

当然,有一些基础知识,比如在repos中设置修订版和比较存储库的内容,但历史,提交消息......移动文件,跟踪分支之间的更改等 - 变得更加复杂。

所以我的问题是:

  • 应该在新转换的git存储库中检查哪些区域,以确定转换是否正确并成功?
  • 有什么需要注意的问题/陷阱?
  • 任何人都可以建议用于评估转换后的svn项目的策略,以确保在转换过程中没有出错吗?

注意 :目前我们正在使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM