我目前有一个大型(30K 提交)SVN 存储库,正在将其转换为 git。我们的代码库当前拥有一组通用(核心)代码,以及两个独立的基础(Java 和 .NET)。这使我们能够共享通用代码,并且当我们将构建推送给仅支持两种语言之一的客户时,我们可以使用不同的语言。
SVN 存储库当前大量使用 svn:externals 在签出时生成使用通用代码以及特定于语言的代码的特定布局。
存储库布局的精简版本如下:
Core
+
+-->classes
+-->public_html
+>admin
+>web
+>images
+>javascript
+>styles
Java
+
+-->public_html
+>web
+>includes
+>code
.NET
+
+-->public_html
+>web
+>includes
+>code
目前,当我从 SVN 中的 trunk 签出时,我将在磁盘上获得上述布局,但是如果我签出子文件夹(Java 或 .NET),svn:externals 将为我提供以下布局:
Java/.NET
+>classes
+>public_html
+>admin
+>web
+>code
+>javascript
+>images
+>includes
+>styles
这还允许我编辑该文件夹中的代码,并且执行签入将提交到存储库中的正确位置。
我的问题是,这是否可以在 git 中使用子模块或其他方法来实现,或者我们是否需要重新思考我们的整个布局以及在检查分支时如何实现我们想要的目标创建一个构建。如果我们可以使用子模块来做到这一点,我是否应该遵循标准子模块教程,或者是否有一些更深入的内容值得我研究?
Thanks!
您不会获得子模块的确切目录结构,因为每个子模块都位于父存储库中自己的目录中。
即,你会得到
Java
+
+-->public_html
*-->Core
+
+-->public_html
(而不是一个混合'public_html
')
我仍然会推荐子模块(并且您可以直接在其中进行修改,如“子模块的真实性质 https://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194").
但请保持这一点git 子模块与svn:externals https://stackoverflow.com/questions/3131912/why-are-git-submodules-incompatible-with-svn-externals/3132221#3132221.
一旦您签出了 Java 存储库(其中引用了核心存储库),我将使用以下命令重新创建正确的目录结构symlinks(可在 Unix 或 Windows 上使用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)