将git-svn与子模块一起使用的策略

时间:2012-07-10 23:17:52

标签: git svn git-submodules

我想在本地使用Git和子模块,并且能够从SVN推送/拉出(我正在使用SVN公司,并且在不久的将来无法切换到Git)。我知道git-svn不支持这个,但我希望能够用shell脚本来欺骗它。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不能使用git-svn,因为它不允许使用git子模块。但我可以提出替代解决方案:

首先看一下SmartGit:它引入了SVN submodules的概念。 svn:externals属性转换为版本控制的.gitsvnextmodules文件,该文件指定SVN子模块列表。要启用子模块支持,只需从头开始使用SmartGit克隆基本存储库(如果您只是打开已克隆的git-svn存储库,SmartGit将处于兼容模式,并且将关闭外部支持)。

如果您更喜欢纯Git而不是git-svn并且可以访问服务器,则可以将SubGit安装到SVN存储库中。它将为SVN存储库创建一个Git接口(实际上是一个单独的Git存储库,它将自动与SVN同步)。之后你可以使用这个纯Git接口添加纯Git模块(我假设你的外部存储库也有Git接口,因为你询问Git子模块)。 Git子模块只能存储在存储库的Git版本中,不会被转换为SVN。