颠覆到 Git:克隆创建分支



我正在将一个大型(>6500 次提交(Subversion 存储库转换为 Git 存储库,并且遇到了一些问题,我希望有人可以提供帮助。这是我所在的地方:

我创建了远程仓库的本地 Subversion 存储库备份。我正在使用以下命令将该存储库转换为 Git:

git svn clone svn://localhost/svn gitrepo –no-metadata -A authors-transform.txt -t tags -b branches -T trunk

这确实会创建一个 Git 存储库,但是当它这样做时,它会创建一些看起来像提交编号的其他分支。我绝对不打算让那些人在那里。从克隆中清理了一点后,我的".git/refs/heads/"文件夹如下所示:

branch1
branch1@6701
branch1@6736
branch2
branch3
branch4
master
trunk

git svn 克隆会这样做有什么理由吗?这些提交中是否有可能创建一个全新分支的内容?

另外,在我将这个新创建的 Git 存储库推送到 GitHub 之前,我应该同时拥有主分支和主分支吗?我不确定Git/GitHub到底要寻找什么。谢谢!

如果我没记错的话,refs/remotes/XXX@rev分支是为已删除的分支创建的。假设它们未创建。那么 refs/remotes/XXX 分支就不存在了(因为它在 SVN 中被删除了(。然后 Git 提交对应的已删除 SVN 分支无法从任何 Git 分支访问,因此可以作为垃圾收集。如果您同时看到 refs/remotes/XXX 和 refs/remotes/XXX@rev存在,这可能意味着分支已被替换。但不幸的是,据我所知,git-svn 为分支替换创建合并提交,从历史翻译的角度来看,这绝对是错误的。

相反,对于SVN->Git迁移,请查看另外2个项目。第一个是SubGit,如果您可以访问SVN服务器,则建议使用。它将替换作为替换处理,合并为合并;而且还翻译忽略,svn:EOL样式属性(到相应的.gitattributes值(,标签等。

另一种选择是SmartGit,如果你无法访问你的SVN服务器。它还提供合理的翻译(合并到合并,忽略到忽略(,但也可以将svn:externals翻译成显示为模块的.gitsvnextmodules文件。

最新更新