1

我在 SVN 中有一个项目,它有一个插件文件夹。几个插件文件夹是 git 存储库——我使用git clone.

这对我来说效果很好,但现在我希望使用以下方法将我的 SVN 存储库迁移到 git git-svn

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

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

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

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

4

3 回答 3

4

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

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

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

于 2009-06-04T10:14:36.817 回答
1

您可以转储当前的 svn 存储库,过滤掉 .git 目录,并基于此过滤后的转储创建另一个 svn 存储库,并将这个新的存储库用作 git 存储库的基础。

git 和 svn 的并行使用可能会很有趣——你必须用新的 gitless 替换现有的 repo,而缺少的 .git 目录可能会导致一些麻烦。

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

于 2009-06-04T09:51:48.080 回答
0

由于 Git 的工作方式,拥有超过 1 个 .git 文件夹会给您带来问题(嗯,您已经知道了,呵呵)。

你有 2 个选择: - 如果你不关心故事,用简单的方法来做:从 svn 中删除 .git 文件夹并转移到 git 整个项目

  • 如果您关心故事,请努力:检查此链接并按照步骤操作

我知道我的团队领导对此有一些问题,但它确实有效。

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

于 2009-06-04T09:55:35.560 回答