有关在VCS中存储/ etc的build议?

什么是最简单的VCS用于跟踪/等? 在版本控制和最佳实践中存储etc目录有哪些挑战? 我应该使用集中式还是分布式VCS?

你可以使用etckeeper来处理它,这会让你使用git,mercurial,darcs或者bzr作为仓库。

使用etckeeper来为你做。 这有很多原因:

  • 您有时会忘记使用VCS; etckeeper钩入包pipe理器,给你一个pre-inst和post-inst状态回滚到
  • 你会搞砸文件的权限
  • 你将搞砸处理阴影passwd文件

我觉得git最适合做这个工作(虽然Mercurial可能也会工作得很好)。 / etc中的一个简单的'git init',你就在你身边。 之后,只需添加你关心的文件,然后任何时候他们改变,你可以检查它。你甚至可以设置cron自动做一个checkin每次有变化(虽然那么你没有得到日志文件)。 如果您想要设置第二台机器具有与第一台机器相同的configuration,或者只是作为备份,则还可以推回购买。

当我开始系统pipe理时,rcs是/ etc的select方法。 然后是CVS,然后是SVN。 我怀疑什么时候有什么新东西出现,我会切换到。 :)但是随着VCS的每一个新范例,我的生活实际上已经变得更容易了。

我同意杰德伯格,但是做相反的事。 使用git仓库,但创build一个忽略所有文件的.gitignore,然后为您关心的文件添加一个unignore。 至less这样你的git状态不会不断地变脏。

即:.gitignore *!hosts!resolv.conf

等等…

约翰

没有任何宗教意图:我强烈build议使用分布式VCS,最好是Bazaar。 这是因为:

  • Bazaar很容易安装(在Ubuntu和Debian服务器上,这只是apt-get install bzr
  • 这很容易设置和开始:
 cd /etc bzr init . bzr add . bzr commit . -m "Initial configuration" 
  • 没有服务器设置要求。 Bazaar可以连接并推送到远程存储库,而无需任何远程Bazaar服务器运行。 可以和任何FTP服务器或WEBDAV等一起使用

Git和Mercurial是另外两个参赛者(正如其他答案中指出的那样),但是他们缺乏在没有设置的情况下推送到远程服务器的能力(至less尚未)。

我不会pipe理版本控制系统中的所有/ etc。 原因是,/ etc的大部分内容可能不会随着时间而改变。 软件包pipe理工具将为您pipe理/ etc中的大量文件,升级软件包可能会导致与VCS有趣的冲突。

相反,我将使用一个configuration pipe理系统来pipe理我的服务器的各种组件和包,使用模板和静态文件(在适用的情况下)来configuration将文件存储在/ etc(和其他地方)的服务和设置。 我会将所有这些存储在版本控制系统中,而且我个人比较喜欢Git,因为作为系统pipe理员,“典型”的Git工作stream比Subversion(或CVS)更有意义。 Git的分权化使得它对我来说是一个系统pipe理的巨大胜利。

作为前面提到的所有build议的补充(这些build议几乎完全描述了我所做的),我只是为自己发现了tig 。 使用cmdlinepipe理git使我疯狂,变化迅速堆积,没有我performance出任何照顾他们的愿望。 只是随便四处看看我注意到git GUIs存在这个基于ncurses的一个叫tig。

现在我真的很期待pipe理我的/ etc!