在主项目存储库中包含实用程序存储库并允许自定义

时间:2012-02-16 11:42:43

标签: git version-control git-submodules git-subtree

我正在努力改善某些项目中的源代码冗余,我遇到了一个问题。

让我们说我有一些实用程序,我使用acros更多的项目。示例:构建足够通用的脚本和测试脚本,以便在所有项目中使用,但也可以为每个项目定制一些配置文件。

我想在一个地方维护构建脚本逻辑(修复错误并添加改进),并在所有使用它的项目中轻松完成更改,但也不会破坏配置文件。

我知道我不能用git子模块执行此操作,因为配置文件需要提交到实用程序存储库而不是项目存储库。

我一直在查看git-subtree,但我不确定它是在做我想要的。

之前有没有人进入过这个?

1 个答案:

答案 0 :(得分:1)

  

我知道我无法使用git子模块执行此操作,因为配置文件需要提交到实用程序存储库而不是项目存储库。

如果您的每个项目都是自己的git存储库,那么您实际上可以使用子模块 然后,每个项目(父存储库)将引用实用程序存储库的特定分支的特定提交,每个分支具有为每个项目定制的那些实用程序。

但是,对于紧密链接的文件集(一方是实用程序,另一方面是项目),最好将所有内容保存在一个存储库中并使用content filter driver

content filter driver

你会:

  • 版本化为模板的通用实用程序(即没有它们的值)
  • 值文件(每个项目一个)
  • 一个版本化的脚本,可以在“smudge”脚本的结帐时生成每个项目中的最终实用程序(前提是您的脚本能够detect the content of the template utilities)。