*BSD 下 /etc 的版本控制

Gil*_*il' 15 configuration version-control etc

/etc在各种 unice 下,存在哪些交钥匙解决方案可以置于版本控制之下?交钥匙并不一定意味着基本安装的一部分,但以下功能会很好:

  • 挂钩到 VCS 命令以管理元数据(所有权、权限);
  • 与包管理器集成(安装前后自动运行,智能处理升级);
  • 将上游文件版本视为一个分支;
  • 预先填写的忽略列表;
  • 支持多个底层 VCS(尤其是分布式 VCS)。

我在Debian和衍生品下使用etckeeper。除了不跟踪上游版本之外,它具有上述所有功能。我想了解替代方案,尤其是在 *BSD 上。

tan*_*nte 6

在 Gentoo 下,管理包引起的更改/etc(称为dispatch-conf)的工具支持 rcs 来跟踪更改,但这并不是很强大。

我倾向于版本我的/etcvia git,特别是因为通过使用不同的分支,我可以/etc在不同的发行版上尽可能保持相似,同时将尽可能多的东西放在一个地方(对于某些明显失败的区域,例如 apache 配置确实是不同的分布不同)。它是这样工作的:

  • 我有我的master默认配置文件的回购。

  • 现在我接触了一个新的发行版,所以我根据发行版master的名称(在本例中为 debian)基于我的分支创建了一个新分支。

  • Debian 将一些配置文件保存在与我不同的位置,master所以我做了一个git mv file new_loc. 一切都很好。

  • 我切换回master并更改该文件,因为我添加了一些特定的配置指令。

  • 当我合并master到我的debian分支时,移动的文件发生了变化,所以我基本上可以改变我master分支中的大部分内容,只需要合并我的“分发”分支中的更改(通常它们往往更多地是分发和目的分支的混合,debian 服务器显然与 debian 工作站有一些不同,但功能仍然有效)。

所以基本上我有一个“通用配置”,master并且(用面向对象的编程术语来说)将它们继承到我的分支中(它们也可以相互继承)。

除此之外,当我只需要某些配置的一部分时, 的git“樱桃挑选”提交(在这种情况下更改为/etc/)的机制对我非常有帮助。

现在谈谈你的一些想法:

  • 如果我需要更多的包管理器集成,我可能会为此使用包装器脚本(目前我不需要)。
  • 将上游版本视为分支可以正常工作git,它只是您有时(部分)合并到的另一个分支master
  • git 中的忽略列表是.gitignore你的 repo 中的文件,因此被覆盖。