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

jsu*_*ggs 4 git

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

我打算让我的项目根目录/home/jsuggs/project.
我还将与Zend Framework(ZF),Doctrine和其他库一起工作,但我只关注ZF,因为一个解决方案可能与其他库的解决方案相同.

我将克隆ZF2存储库/home/jsuggs/zf2.
我想/home/jsuggs/project/application/library/Zend参考一下/home/jsuggs/zf2/library/Zend.

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

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

我还想避免路径是绝对的,所以如果其他人在项目上工作,那么库路径将不会引用我的主目录.

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

Von*_*onC 7

每当您需要为不同的文件集进行特定配置(特定修订)时,基于组件的方法是最好的.

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

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

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