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

Git 在主项目存储库中包括实用程序存储库并允许自定义,git,version-control,git-submodules,git-subtree,Git,Version Control,Git Submodules,Git Subtree,我正在一些项目中改进源代码冗余,我面临一个问题 假设我有一些实用程序,我可以在更多的项目中使用。示例:构建脚本和测试脚本足够通用,可以在所有项目上使用,但也可以为每个项目自定义一些配置文件 我希望在一个地方维护构建脚本逻辑(修复bug和添加改进),并在所有使用它的项目中轻松地进行更改,但也不会破坏配置文件 我知道我不能用git子模块实现这一点,因为配置文件需要提交到实用程序存储库,而不是项目存储库 我也一直在看,但我不确定它是否在做我想做的事情 以前有人卷入这件事吗 我知道我不能用git子模块实

我正在一些项目中改进源代码冗余,我面临一个问题

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

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

我知道我不能用git子模块实现这一点,因为配置文件需要提交到实用程序存储库,而不是项目存储库

我也一直在看,但我不确定它是否在做我想做的事情

以前有人卷入这件事吗

我知道我不能用git子模块实现这一点,因为配置文件需要提交到实用程序存储库,而不是项目存储库

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

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

你应该:

  • 通用实用程序版本为模板(即没有其值)
  • 值文件(每个项目一个)
  • 在“
    smudge
    ”脚本中签出时,可在每个项目中生成最终实用程序的版本化脚本(前提是您的脚本能够)
我知道我不能用git子模块实现这一点,因为配置文件需要提交到实用程序存储库,而不是项目存储库

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

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

你应该:

  • 通用实用程序版本为模板(即没有其值)
  • 值文件(每个项目一个)
  • 在“
    smudge
    ”脚本中签出时,可在每个项目中生成最终实用程序的版本化脚本(前提是您的脚本能够)
为什么不提供脚本的配置作为路径?通过这种方式,您可以在子模块中删除构建脚本,并且每个项目一个构建配置。为什么不提供脚本的配置作为路径?通过这种方式,您可以在子模块中删除构建脚本,并为每个项目配置一个构建配置