代码之家  ›  专栏  ›  技术社区  ›  Olly

我可以让git svn导入一个本身包含git存储库的子版本存储库吗

  •  1
  • Olly  · 技术社区  · 15 年前

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

    这对我来说很好,但是现在我想用 git-svn :

    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 回复  |  直到 15 年前
        1
  •  4
  •   Olly    15 年前

    结果是我在Ubuntu上使用了GitSvn1.5,它不支持 --ignore-paths 旗上 git-svn fetch . 在从源代码构建Git 1.6之后,我现在可以运行:

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

    现在获取忽略所有 .git 并成功地将所有SVN历史导入到我的新Git存储库。

        2
  •  1
  •   Cebjyre    15 年前

    您可以转储当前的SVN回购, filter 输出.git目录,并基于这个过滤后的转储创建另一个SVN repo,并使用这个新目录作为git repo的基础。

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

    我还没试过,所以你得小心点,有备份。

        3
  •  0
  •   Pere Villega    15 年前

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

    您有两种选择: -如果你不在乎故事,那么就用简单的方法:从svn中删除.git文件夹,然后将整个项目移到git。

    • 如果你关心故事,就用强硬的方式:检查这个 link 然后按照步骤

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

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