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

标签 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

我希望能够在两个存储库(项目和 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/

相关文章:

git - git clone 是如何工作的

Git:手动重命名文件,Git感到困惑

git - 在 Android Studio GUI 中显示所有冲突文件

git - 如何在 Gitlab 服务器中记录所有用户的 git 命令( pull/克隆/推...)?

git - nbstripout : what does `diff=ipynb` do in . gitattributes?

git - 我正在尝试推送到 Heroku,但它说我的指纹不正确

git - 当创建一个包含 40,000 个内容的新 git 存储库时,我必须在 COMMIT 文件中取消对每个内容的注释吗?

ios - 在 Xcode 上模拟 Cordova 应用程序时如何更新代码?

git - 从私有(private) GitHub 存储库 checkout 标签

windows - 无法创建目录 '/home/username/.ssh'