为多个git-svn存储库创建一个主git存储库

时间:2012-02-16 00:29:31

标签: git svn repository git-svn

我有一个由多个服务组成的项目, 每个都在他们自己的SVN存储库和一个构建脚本中,它将每个SVN存储库检出为单个/project目录中的文件夹以及/project级别Makefile,以递归方式构建整个项目。 / p>

在视觉上它看起来像这样:

/project
  Makefile
  /service1    # First service (SVN repository)
    /.svn
  /service2    # Second service (SVN repository)
    /.svn
  ...

我正在尝试将项目转换为单个可共享的git存储库,以便与队友协作,而无需删除提交回原始SVN存储库的能力。

我目前的想法是使用git-svn查看每个SVN存储库(/service1/service2等),然后在/project级别创建一个主git存储库以进行分组他们进入一个存储库。假设的项目结构看起来像这样:

/project
  /.git      # Master git repository
  Makefile
  /service1    # First service (SVN repository)
    /.git      # .git directory for git-svn checkout of service 1
  /service2    # Second service (SVN repository)
    /.git      # .git directory for git-svn checkout of service 2
  ...

这会有效吗?有更简单的解决方案吗?

注意:我有权重新定义项目结构或SVN存储库的结构。

1 个答案:

答案 0 :(得分:1)

如果您将/project视为引用servicexx git repos为submodules的父存储库,则它可以正常工作。

这样,其他协作者只能引用父回购,并返回其中的所有子模块。
如“True Nature of submodules”中所述,他们可以在这些子模块中创建/签出分支并开始修改它们。

确保一个分支专用于git svn dcommit(合并回SVN):
请参阅“Overcome git svn caveats”和“Easy merging in svn using git-svn”。