*BSD 下 /etc 的版本控制

*BSD 下 /etc 的版本控制

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

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

我用等等管理员在 Debian 及其衍生版本下。它具有上述所有功能,只是它不跟踪上游版本。我想了解替代方案,特别是 *BSD。

答案1

在 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,因此已被覆盖。

答案2

我已经用过fossil这个并取得了一些成功。看我关于化石的帖子了解更多信息。我还使用了一个名为的工具,etcupdate它更适合在升级之间移动,而不是跟踪更改。我相信它freebsd-update曾经一度是作为一种配套工具。我目前不确定它的状态,但它可以在我的 RELEASE-8.*系统上运行。

http://lists.freebsd.org/pipermail/freebsd-current/2010-June/017927.html http://people.freebsd.org/~jhb/etcupdate/

答案3

有一个工具叫等等管理员我不知道它有多好。

etckeeper 是一个工具集合,可让 /etc 存储在 git、mercurial、darcs 或 bzr 存储库中。它连接到 apt(以及其他包管理器,包括 yum 和 pacman-g2),以在包升级期间自动提交对 /etc 所做的更改。它跟踪修订控制系统通常不支持的文件元数据,但这对 /etc 很重要,例如 /etc/shadow 的权限。它非常模块化和可配置,而且如果您了解使用版本控制的基础知识,那么使用起来也很简单。

我也不知道它是否可以在 *BSD 上工作,我怀疑它可以,但开箱即用的端口不支持它。

相关内容