我正在尝试使用 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
。
我希望能够在两个存储库(项目和 zf2)上本地工作,其中切换 zf2 中的分支直接影响项目。
我的问题是如何设置 Git,以便深度嵌套的库可以在开发期间引用我的本地版本,但也可以在部署到生产环境时设置到(其他/任意)位置?
我还想避免使用绝对路径,这样如果其他人在处理该项目,那么库路径就不会引用我的主目录。
我正在研究使用符号链接(symbolic link)和 git 子模块,但想知道是否有针对此类设置的“最佳实践”。另外,我完全有可能做错了,所以请随意说“只做 X”。
最佳答案
每当您需要为不同的文件集进行特定配置(特定修订)时,component-based approach最好。
使用符号链接(symbolic link),您不知道您的项目(通过路径 /home/jsuggs/project/application/library/Zend
)引用的 zf2 的确切版本。
但是对于子模块,您将拥有:
- 存储在您项目中的子组件 zf2 的确切版本(如果您想管理“
prod
”分支,则包括用于生产部署的不同版本), - 直接从
/home/jsuggs/project/application/library/Zend
更改/修改 zf2 的能力(前提是您在 zf2 中提交这些更改,然后在中提交 zf2 新修订版/home/jsuggs/project/application/library
,即您的父项目)。
关于git 嵌套存储库 - 子模块与符号链接(symbolic link)与其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233562/