使用gitignore嵌套存储库



我想嵌套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真的不在乎未跟踪的文件&目录。

最新更新