使用gitignore嵌套存储库。

时间:2012-11-27 01:08:09

标签: git

我想要嵌套2 git repos。我一直在阅读子模块,有一段时间我认为这很棒,我想我可能想要别的东西。这是我的情况:

首先,我想我应该提到我的所有服务器都托管网站,并以staging.domain.com和domain.com(实时)模式进行设置。

在每个服务器中,我有一个父级仓库,一个网站和一个子仓库,它是我的核心库。我需要我的核心在我的所有服务器上都是一样的,但网站repos对于他们所居住的服务器来说都是独一无二的。我想对核心进行更改,同时推送到所有临时域,然后进行一些质量保证,并推送到所有实时服务器。

我最初虽然子模块可以满足我的需求,但我遇到的问题是我需要核心一次更新所有内核。如果我使用子模块,我的核心将更新,但在父网站运行git submodule update和git commit之前不会生效。

我想为什么不只是使用gitignore来忽略核心所在的文件夹并将它们视为独立的实体。还有其他人这样做过吗?我会遇到什么问题?你有更好的建议吗?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

您的登台服务器上的接收后提交似乎可能会受益,您可以:

  • 将您的更新推送至裸仓库
  • 触发所有暂存网站的git submodule update
    • cd到一个服务器网站/path/staging/site1
    • GIT_DIR=/path/staging/site1/.git WORK_TREE=/path/staging/site1/.git git submodule update
    • 重复每个网站

这个想法将是:

  • 一推
  • 多次更新
  • 保持子模块的优势(即记录您的网站正在使用的核心版本)

答案 1 :(得分:2)

您可以使用git-subtreeSample of usage

代替子模块

答案 2 :(得分:0)

这取决于您是否希望父回购上的“git status”返回repo是干净的。如果你可以在父回购中使用“git status”,返回类似“Untracked files:... core-libraries /”的内容,那么你可以将core-libraries repo作为父回购的未跟踪子项。

Git真的不关心未跟踪文件&目录。