3

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

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

4

2 回答 2

1

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

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

和:

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

或者:

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

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

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

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

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

我的解决方案如下:

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

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

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

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

于 2013-09-20T14:53:59.710 回答