Etckeeper是一个很好的工具,用于跟踪/etc
. 关于它的一些关键事情真的很突出。它可以与多种 VCS 一起使用:git、mercurial、darcs 或 bzr。它还每天以及在您安装、删除或升级软件包时自动提交。它还跟踪文件权限和用户/组所有权元数据。
我还想将我的“点文件”保存在我的主目录中,并受版本控制,最好是集市。有谁知道是否有类似 etckeeper 的工具用于此目的?
最坏的情况,我想象一个简单的 cron 作业bzr add && bzr ci
每天运行一次或两次,同时将~/Documents
,~/Music
等添加到.bzrignore
任何已经用脚本做类似事情的人?
虽然我更喜欢集市,但其他选择可能会很有趣。
我不知道是否有任何东西可以做到这一点,所以我使用我的存储库在这里编写了一些代码来实现你想要的:http: //github.com/robertmassaioli/config-files
我有一个文件说明所有文件所属的位置,而 generate_links 程序只是将它们都放在那里。如果您知道自己在做什么并且可以编译一些 Haskell 代码,那么这真的很简单。虽然被警告它真的是为我自己的个人使用而制作的。
好吧,我继续手动执行此操作,直到找到更好的解决方案。所以我不妨解释一下我做了什么。
首先我做了一个
bzr init ~
,但接下来我做的是bzr ignore "*"
。我决定我不想让整个事情都处于版本控制之下。这是不值得的,尤其是当您认为其中有些东西确实不应该像钥匙一样保留在 vcs 中时。所以我必须得到bzr add
我想要的特定文件。您还可以将例外添加到.bzrignore
. Python 正则表达式在那里也很有用。我现在保持它很苗条。如果一切顺利,我可能也会添加所有~/.config
内容~/.gconf
。我还编写了一个作为 cron 作业运行的快速脚本。它检查文件是否已更改,如果是,则自动提交:
我将整个
~
目录变成了 Bazaar 存储库。存储元数据对于主目录中的文件来说不是问题:所有内容都归同一个帐户和组所有,并且bzr
已经存储了执行位。我手动将“有趣”文件添加到其中(我不希望,例如,我的音乐收藏或 firefox 缓存受版本控制),但如果您想使用脚本自动执行此操作,我认为这是简单的解决方案
bzr add && bzr ci
在选定的目录或命令的输出上做find
就可以完成这项工作。我将我的 zsh 和 vim 文件保存在 git 中,放在 github 上,在不同的存储库中:
例如,对于 zsh,我创建了“.zsh”并将 zshrc 和 zshenv 放入其中,再加上一个将 zshrc 链接到 ~/.zshrc 并将 zshenv 链接到 ~/.zshenv 的脚本,就像这样。
所以我愿意
对于.vim,它几乎是一样的,除了我使用带有病原体的插件的子模块,所以我在init.sh中添加了它
当我想添加一个vim插件时,我会
例如。
好的,如果您要管理多个点目录,则需要做太多的工作,但是没有什么可以阻止您将它们全部放在同一个目录中,或按活动分隔(所有图形编辑器都打开,一个用于网络活动……)左右。无论如何,这就是我所做的,所以只有我的两分钱:)。
我使用了一个不像 etckeeper 那样自动的解决方案(我必须手动提交),但它对我来说效果很好。它不像我喜欢的那样发达,但它确实有效。
我编写了自己的实用程序,类似于GNU Stow,因为 stow 并没有做我想做的所有事情。我称之为Stow in Home。运行时,它会查找名为“HOME”的目录。然后它获取该目录下的所有内容并将其符号链接到 $HOME 中的相应位置,并根据需要创建目录。它还将翻译文件名——如果文件以“_”开头,它将被替换为“.”。我这样做是因为当它们不隐藏时编辑我的点文件会更好(默认情况下在目录列表中查看它们)。然后,它会将它们放在应用程序期望的名称中。
所以,我有几个 git 存储库用于我的配置。我只将我个人编辑的点文件放入其中。这样做的好处是我可以有一个点文件的存储库,我可以与其他人共享(比如我的 Emacs 配置)和一个用于其他私有的存储库(例如,我的 ssh 配置,带有主机名等用于工作)。带有 stow-in-home 的符号链接将所有内容放在正确的位置,但每个的源代码控制可以是单独的。
它对我来说效果很好。我真的没有理由不能设置一些东西来自动提交。或者将所有点文件移动到适当的存储库中,并且仍然在家中使用 stow。但这就是我做事的方式。
我将文件保存在子目录中并创建符号链接。我有一个自动执行此操作的脚本。您可以在http://code.google.com/p/samking-config-files/source/browse/上查看所有内容
你不能将 tckeeper 添加
dot files
到 Etckeeper 中使用的存储库中吗?我通过将我喜欢保留在源代码控制下的所有点文件复制到我的 /home/ 目录中名为“dotfiles”的文件夹来完成此操作。当然,这意味着保留副本并在必要时来回复制,但我发现这对我自己来说是最简单的解决方案。