代码之家  ›  专栏  ›  技术社区  ›  jsuggs

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

git
  •  4
  • jsuggs  · 技术社区  · 14 年前

    我正在尝试用Git设置我的(Zend框架)开发环境(或者更重要的是我的目录结构)。然而,我的基本问题实际上与所涉及的特定库无关,更重要的是如何让Git实现我想要的。

    我要把我的项目根 /home/jsuggs/project .
    我还将与Zend框架(ZF)、条令和其他库一起工作,但我只关注ZF,因为其中一个库的解决方案可能与其他库的解决方案相同。

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

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

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

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

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

    1 回复  |  直到 14 年前
        1
  •  7
  •   Community dbr    7 年前

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

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

    但有了子模块,您将拥有:

    • 存储在项目中的子组件zf2的确切版本(如果要管理一个 prod “分支”,
    • 直接更改/修改ZF2的能力 /主页/jsuggs/project/application/library/zend (前提是在zf2中提交这些更改,然后在 /home/jsuggs/project/application/library ,即您的父项目)。