Version control 在git存储库中保留自定义生成配置文件

Version control 在git存储库中保留自定义生成配置文件,version-control,configuration-files,msysgit,Version Control,Configuration Files,Msysgit,我在git存储库中有一个项目,它为构建环境等使用了一些自定义(目前尚未版本化)的设置脚本。我希望将这些脚本置于版本控制之下(希望是git),但将它们的版本控制与项目本身分开,虽然仍然生活在项目的基本目录中,但我考虑过像本地分支这样的选项,但这些分支似乎存在问题,即切换回master(或任何其他“真实”分支)将丢弃安装脚本的工作副本 我在Windows上使用msysgit,所以我有一些工具可以使用;有人有建议或解决方案吗?如果您确实需要将它们与您的主要git回购分开,同时仍直接生活在其中,您可以尝

我在git存储库中有一个项目,它为构建环境等使用了一些自定义(目前尚未版本化)的设置脚本。我希望将这些脚本置于版本控制之下(希望是git),但将它们的版本控制与项目本身分开,虽然仍然生活在项目的基本目录中,但我考虑过像本地分支这样的选项,但这些分支似乎存在问题,即切换回
master
(或任何其他“真实”分支)将丢弃安装脚本的工作副本


我在Windows上使用msysgit,所以我有一些工具可以使用;有人有建议或解决方案吗?

如果您确实需要将它们与您的主要git回购分开,同时仍直接生活在其中,您可以尝试:

  • 使用其中的脚本创建新回购协议
以及:

  • 将新回购作为子模块添加到回购中。除:
    • a/这些脚本不会直接位于基本目录中,而是位于表示子模块的子文件夹中
    • b/当然,您需要不发布(推送)该新的回购协议,以便其他克隆您的主回购协议不会获得这些设置文件
或:

  • 将新回购合并到主回购中(使用),但:
    • 您需要拆分项目以删除这些文件
    • 对于一个有着大量历史的项目,并且需要频繁的推送,这一步(拆分)可能是漫长而繁琐的
我会考虑一个更简单的解决方案,包括对当前安装文件的一些改进:

  • 带有这些设置文件的私有回购(如“未推送”)
  • 带有主git repo路径的环境变量,以便安装文件(不直接位于所述主repo的基本目录中)在正确的目录中执行其工作(例如,以“
    cd right\u main\u git\u repo\u dir
    ”开头)

我想分享一个额外的解决方案和一些示例

我在尝试使用构建Mozilla Firefox时遇到了类似的问题——我需要在根文件夹中有一些文件(即
.mozconfig
文件和一些帮助程序脚本),并且我想分别对它们进行版本设置

我的解决办法如下:

  • 从浏览器中签出Firefox代码
  • 用我需要的附加文件签出附加存储库
  • 在开始构建之前,我用Firefox代码将这些文件复制到文件夹中
  • 此方法在以下存储库中实现:

    • :它包含Buildbot配置,其中
      • 拉两个存储库
      • 从脚本存储库复制文件
      • 开始建造
    • :包含生成配置和帮助程序脚本的存储库
    请注意,代码可能没有经过很好的分解(例如路径),但它应该是一个很好的起点


    这个过程是为Firefox量身定制的,但它可以应用于任何存储库。

    我认为简单的解决方案可能是最好的;我已经创建了一个私人回购协议,作为我项目的兄弟,因此任何
    cd../project/
    都可以在这两个平台上运行。似乎到目前为止还有效;谢谢