2010-07-13 139 views
4

我试图用git设置我的(Zend Framework)开发环境(或者更重要的是我的目录结构)。但是,我的根本问题与涉及的特定库无关,但更重要的是如何让git完成我想要的。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 submodules,但想知道是否有这种类型的安装程序的“最佳做法”。另外,我完全有可能只是做错了,所以可以自由地说“只是做X代替”。

回答

7

每当你需要有不同的一组文件的具体配置(具体修订版)中,component-based approach是最好的。

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

但随着子模块,你将有:

  • 存储在您的项目内的子组件ZF2的确切版本(包括一个不同的生产部署,如果你想管理“prod”分支) ,
  • 改变/修改ZF2直接从/home/jsuggs/project/application/library/Zend(前提是你犯ZF2内的那些变化,那么内/home/jsuggs/project/application/library提交ZF2全新改版,即你的父项目)的能力。
+0

谢谢,可能会标记为解决方案。但首先需要澄清一下如何通过Git和子模块来实现这一点。 当我添加对zf2子模块的引用时,我应该在其中添加引用: a)上游zf2主分支? b)我的zf2个人github克隆? c)我的zf2本地分支? 我宁愿立即更改我的本地zf2分支效果项目,但意识到我可能必须执行“git submodule update”才能将它们拉入。欢迎任何建议/建议。 再次感谢您的回应! – jsuggs 2010-07-13 17:28:26

+0

此外,我发现以下链接非常有用,因为子模块有点令人困惑(或相当棘手)来获得设置。 http:// chrisjean。/ 2009/04/20/git-submodules-adding-using-removing-and-updates/ – jsuggs 2010-07-13 17:28:53

+0

@jsuggs:read also http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 on子模块。我喜欢引用本地克隆为了保持每个本地依赖。但是,一旦你引用了一个子模块回购,你可以在回购中选择你需要的任何分支(假设你回到父回购并再次提交,以注册新的子模块参考) – VonC 2010-07-13 18:04:20