你如何版本你的家? 我想要一些关于subrepos的信息

我已经开始在版本控制中的一些文件在mercurial。 它以.vim开头,然后是.bashrc ,现在我意识到很多其他文件也可以被版本化(例如.zshrc,由taskwarrior创build的.task目录等)

事实是,我想知道哪些方法是可用的,以及这里的人们如何做到这一点。

版本控制并不是一个好主意,因为我需要编辑我的.hgignore ,并且每次添加一个新文件夹时,我不想要版本控制,我也需要编辑.hgignore

所以我想到了两种方法:

  • 创build一个“dotfiles”回购(vim,bash,screenrc),将其克隆到家中,并在其中创build符号链接;
  • 为每个configuration(vim,bash,screenrc,cvsrc等)创build一个“dotfiles”回购和回购。 这个“dotfiles”回购将其他库作为子模块,但在家里创build符号链接仍然是需要的。

你认为在第二种方法中为每个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脚本,所以我可以克隆我的回购,并运行脚本。