我可以在svn repos中使用git repos吗?

时间:2010-01-28 16:09:10

标签: svn git

在工作中,我们将所有客户项目保留在subversion存储库中,并且在可预见的将来不会改变它。我们的许多项目使用相同的插件/模块,我们也开源其中一些并在我们自己的github帐户上共享它们。

我想做的是:

  1. 使用subversion中的所有代码维护客户端项目
  2. 任何开发人员将插件/模块从任何远程/ github存储库添加到项目
  3. 任何开发人员都可以对github repos进行更改并将其添加到项目的svn repo中(按项目逐个项目,而不是一次性完成)
  4. 能够对从github repos中提取的代码进行项目特定的调整,这些代码不会被推回到github或影响从github提取更改的能力
  5. 具有所需ssh密钥的开发人员可以将对github上的代码的本地更改推送回github,因此任何错误修复或对使用插件/模块的所有项目都有益的新功能也可以将其拉下来。
  6. 这可能吗?如果是这样,怎么样?

    我可以结合使用:

    1. 供应商在svn repos中与每个外部github repos的供应商进行分支,以保持github上可重复使用代码的分离以及项目的调整代码。
    2. 将.git文件夹提交到svn repo中的供应商分支,以便任何人都可以提取最新的更改。

3 个答案:

答案 0 :(得分:10)

相当有趣,github added Subversion support作为一个非四月傻瓜的笑话。换句话说,看起来像是一个愚人节的笑话,但功能齐全!

您可以使用Subversion网址http://github.com/USER/PROJECT将git存储库添加为svn:externals。

答案 1 :(得分:2)

我相信你要求的大部分内容都可以使用git-svn(http://git.or.cz/course/svn.html),它允许你在subversion之上层叠git。当你觉得它是一个好时候,你可以回到svn存储库之间,并以正常的git方式使用git。

答案 2 :(得分:2)

以您建议的方式组合.git和.svn存储库应该没有问题。

对于以这种方式使用的每个git repo,我建议将.svn添加到.gitignore文件中。

您需要一种策略来防止私有变更上游到git中心。例如,将所有这些保存在一个单独的分支中,您可以在上传之前执行反向rebase合并,然后将其还原。