>我有一个由几个服务组成的项目,每个都在自己的SVN存储库中,还有一个构建脚本,该脚本将每个SVN存储库签出为单个/project
目录中的文件夹,以及一个/project
级别Makefile
,以递归方式构建整个项目。
视觉上它看起来像这样:
/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存储库的结构。
它可以工作,前提是您将/project
视为引用servicexx
git 存储库作为子模块的父存储库。
这样,其他协作者可以仅引用父存储库,并取回其中的所有子模块。
如"子模块的真实性质"中所述,他们可以在这些子模块中创建/签出分支并开始修改它们。
确保有一个分支专用于git svn dcommit
(合并回SVN(:
请参阅"克服 git svn 注意事项"和"使用 git-svn 轻松合并 svn"。