我可以让git-svn导入一个Subversion存储库,它本身包含git存储库

时间:2009-06-04 09:36:14

标签: svn git git-svn

我在SVN中有一个项目,它有一个插件文件夹。几个插件文件夹是git存储库 - 我使用git clone将它们添加到我的插件文件夹中。

这对我来说效果很好,但现在我想使用git-svn将我的SVN存储库迁移到git:

git svn init http://path/to/my/repo --no-metadata 
git config svn.authorsfile ~/authors.txt
git svn fetch

这适用于我的所有早期版本,我的插件文件夹中没有git repos,但是当它遇到包含git存储库的第一个修订版时,它会失败并出现以下错误:

trunk/plugins/my_plugin/.git/HEAD was not found in commit 
ae9ad0ab7cebd144c823d90d43cdab2b30d13f9e (r2259)

有没有办法让我完全导入我的存储库,可能是通过排除驻留在SVN存储库中的任何.git文件夹?

3 个答案:

答案 0 :(得分:4)

事实证明我在Ubuntu上使用了git-svn 1.5,它不支持--ignore-paths上的git-svn fetch标志。从源代码构建git 1.6后,我现在可以运行:

git svn fetch --ignore-paths='\.git'

fetch现在忽略所有.git个文件夹,并成功将所有SVN历史记录导入我的新git存储库。

答案 1 :(得分:1)

你可以将当前的svn repo,filter转储出.git目录,然后根据这个过滤的转储创建另一个svn repo,并使用这个新的作为git repo的基础。

并行使用git和svn可能有趣 - 你必须用新的gitless替换现有的repo,而丢失的.git目录可能会引起一些麻烦。

我没有试过这个,所以你要小心,并备份。

答案 2 :(得分:0)

由于Git的工作方式,拥有超过1 .git文件夹会导致问题(好吧,你已经知道了嘿嘿)。

您有两种选择: - 如果你不关心故事,那就这么简单:从svn中删除.git文件夹并移动到git整个项目

  • 如果你关心故事,那就这么做吧:查看link并按照步骤进行操作

我知道我的团队负责人有一些问题,但是有效。

编辑:我忘了提到另一种方式:您可以使用Bazaar来拉动项目,因为它与两者进行交互。不确定这是否会更容易