git嵌套存储库 - 子模块与符号链接与其他

时间:2010-07-13 01:26:54

标签: git

我正在尝试使用git设置我的(Zend Framework)开发环境(或者更重要的是我的目录结构)。但是,我的基本问题实际上与所涉及的特定库无关,更重要的是如何让git完成我想要的东西。

我的项目根目录是/home/jsuggs/project 我也将与Zend Framework(ZF),Doctrine和其他库一起工作,但我只关注ZF,因为一个解决方案对其他人来说可能是相同的。

我将在/home/jsuggs/zf2中克隆ZF2存储库 我希望/home/jsuggs/project/application/library/Zend引用/home/jsuggs/zf2/library/Zend

我希望能够在两个存储库(project和zf2)上本地工作,其中zf2中的切换分支直接影响项目。

我的问题是我如何设置Git以便深度嵌套的库可以在开发期间引用我的本地版本,但也可以在部署到生产中时设置为(其他/任意)位置?

我还想避免将路径设置为绝对路径,这样如果其他人在项目上工作,那么库路径就不会引用我的主目录。

我正在研究使用符号链接和git子模块,但是想知道这种类型的设置是否存在“最佳实践”。而且,我完全有可能做错了所以请随意说“只做X而不是。”

1 个答案:

答案 0 :(得分:7)

每当您需要为不同的文件集进行特定配置(特定修订)时,component-based approach最好。

使用符号链接,您不知道您的项目(通过路径/home/jsuggs/project/application/library/Zend)引用的zf2的确切版本。

但是使用子模块,您将拥有:

  • 项目中存储的子组件zf2的确切版本(如果您想管理“prod”分支,则包括用于生产部署的不同版本),
  • 直接从/home/jsuggs/project/application/library/Zend更改/修改zf2的能力(假设您在zf2中提交了这些更改,然后在/home/jsuggs/project/application/library内提交zf2新修订版,即您的父项目)。