【问题标题】:Keeping custom build configuration files in a git repository将自定义构建配置文件保存在 git 存储库中
【发布时间】:2011-03-23 18:41:22
【问题描述】:

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

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

【问题讨论】:

    标签: version-control configuration-files msysgit


    【解决方案1】:

    如果您确实需要将它们与您的主 git 存储库分开,同时仍直接居住在其中,您可以尝试:

    • 使用其中的脚本创建一个新的存储库

    和:

    • 将该新存储库作为子模块添加到您的存储库中。除了:
      • a/ 这些脚本不会直接存在于基目录中,而是存在于代表子模块的子文件夹中
      • b/ 您当然需要不发布(推送)该新存储库,以便其他克隆您的主存储库无法获取这些设置文件

    或:

    • 将该新存储库合并到您的主存储库中(使用 subtree project),但是:
      • 您需要拆分项目以删除这些文件
      • 对于历史悠久且频繁推送的项目,该步骤(拆分)可能会很长且很麻烦。

    我会考虑一个更简单的解决方案,包括对您当前的设置文件进行一些改进:

    • 带有这些设置文件的私人仓库(如“未推送”)
    • 环境变量与您的主 git 存储库的路径,以便您的设置文件(不会直接在所述主存储库的基本目录中)在正确的目录中完成它们的工作(例如以“cd right_main_git_repo_dir”开头)。

    【讨论】:

    • 我认为简单的解决方案可能是最好的;我已经创建了一个私人回购作为我项目的兄弟姐妹,所以任何cd ../project/ 都可以在两者中使用。到目前为止似乎正在工作;谢谢!
    【解决方案2】:

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

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

    我的解决方法如下:

    1. Mercurial repository 签出 Firefox 代码;
    2. 用我需要的附加文件签出一个附加存储库;
    3. 在开始构建之前,我将这些文件复制到包含 Firefox 代码的文件夹中。

    此方法在以下存储库中实现:

    请注意,代码可能没有很好地分解(例如路径),但它应该是一个很好的起点。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2013-08-07
      相关资源
      最近更新 更多