我已经开始在版本控制中的一些文件在mercurial。 它以.vim
开头,然后是.bashrc
,现在我意识到很多其他文件也可以被版本化(例如.zshrc,由taskwarrior创build的.task目录等)
事实是,我想知道哪些方法是可用的,以及这里的人们如何做到这一点。
版本控制并不是一个好主意,因为我需要编辑我的.hgignore
,并且每次添加一个新文件夹时,我不想要版本控制,我也需要编辑.hgignore
。
所以我想到了两种方法:
你认为在第二种方法中为每个configuration创build一个存储库是多余的? 你有另外的build议吗? 我想在linux / mac上使用这种方法。 我也在Windows上使用vim,这就是为什么我要用子模块制作不同的存储库 – 在Windows中,我只需克隆vim repo:home repo将vim作为子模块。
(我正在使用一个bitbucket的私人帐户,是否有可能在那里有子模块?还有一件事情:是否有可能在一个mercurial存储库中的子模块作为子模块,以及如何?
谢谢!
大多数这样做的人把这样的东西放在~/.hgignore
文件中:
.*
这会自动忽略一切 。 然后,他们只是hg add
他们想跟踪的文件 – hg add
覆盖忽略规则(不像在CVS / svn中)。
有一点需要注意的是,mercurial不会跟踪文件的权限(除了执行位),所以你必须小心诸如.ssh / authorized_keys之类的东西,而不是它所需要的600
。 像etckeeper这样的工具可以自动处理这些使得hg(或者git)适合用在不仅仅是~
系统上的部分,而且也是系统的东西,比如/etc
我会建议做一个存储库,并硬连接你所有的点文件。 这样,你将只管理一个存储库,但是你不必在主目录中的每个文件都有一个.hgignore。 我用Dropbox而不是Mercurial来做,而且效果很好。
尽管所有的答案都很好,但我依靠自己的解决方案来决定。
我将创建两个存储库:vim和home(我在不同的操作系统中使用vim,* nixes和windows,所以为此需要单独的存储库)。 Vim将会在家里成为一个subrepo。
首页将是一个dotfiles文件夹,有一个符号链接所有的bash脚本,所以我可以克隆我的回购,并运行脚本。