我想嵌套2位数的repos。我一直在阅读子模块,有一段时间我觉得它很棒,我想我可能想要其他东西。这是我的情况:
首先,我想我应该提到的是,我的所有服务器都托管网站,并且都是以staging.domain.com和domain.com(live)模式设置的。
在每台服务器中,我都有一个作为网站的父repo和一个作为核心库的子repo。我需要我的核心在我的所有服务器上都是一样的,但网站转发对于他们居住的服务器来说都是独一无二的。我想将更改写入核心,同时推送到所有暂存域,然后进行一些质量保证,并推送到所有活动服务器。
我最初认为子模块可以满足我的需求,但我对它们的问题是,我需要核心同时更新。如果我使用子模块,我的核心会更新,但在父网站运行git子模块更新和git提交之前不会生效。
我想为什么不使用gitignore来忽略核心所在的文件夹,并将它们视为独立的实体。其他人做过这个吗?我会遇到什么问题?你有什么更好的建议吗?
提前谢谢。
您可以使用git-subtree(使用示例)而不是子模块
您可能会从您的暂存服务器上的接收后提交中受益,在该服务器上您可以:
- 将您的更新推送到裸回购核心
- 触发所有暂存站点的
git submodule update
cd
到一个服务器站点/path/staging/site1
GIT_DIR=/path/staging/site1/.git WORK_TREE=/path/staging/site1/.git git submodule update
- 对每个站点重复
这个想法应该是:
- 一键
- 多次更新
- 保持子模块的优势(即,记录您的网站正在使用的核心的确切版本)
这取决于您是否希望父repo上的"git status"返回repo是干净的。如果您可以在父repo上使用"git status"返回类似"Untracked files:…core libraries/"的内容,那么您可以将核心库repo作为父repo的未跟踪子级。
Git真的不在乎未跟踪的文件&目录。