我开始在mercurial中将一些文件放在版本控制中。它从.vim
开始,然后用.bashrc
开始,现在我意识到许多其他文件也可以被版本化(例如.zshrc,由taskwarrior创建的.task目录等)
事实上,我想知道哪些方法可用,以及SO中的人们如何做到这一点。
版本回家不是一个好主意,因为我需要编辑我的.hgignore
,每次添加我不想要版本化的新文件夹时,我都需要编辑.hgignore
。
所以我想到了两种方法:
您是否认为在第二种方法中为每个配置创建存储库是否过度?你有其他建议吗?我想在linux / mac上使用这种方法。我也在windows上使用vim,这就是为什么我要用子模块制作不同的存储库 - 在windows中我只是克隆vim repo:home repo将vim作为子模块。
(我正在使用一个bitbucket私人帐户。是否有可能在那里有子模块?还有一件事:是否有可能将git子模块作为子模块存放在一个mercurial存储库中?怎么样?)
谢谢!
答案 0 :(得分:7)
大多数这样做的人在他们的~/.hgignore
文件中添加了这样的内容:
.*
会自动忽略所有内容。然后他们只需要hg add
他们想要跟踪的文件 - hg add
覆盖忽略规则(与CVS / svn不同)。
要注意的一点是,mercurial不会跟踪文件权限(执行位除外),因此您必须小心.ssh / authorized_keys等获取其所需的600
以外的权限。像etckeeper这样的工具可以自动处理这个hg(或git)部分的权限(和所有权),不仅适用于~
,还适用于/etc
等系统内容。
答案 1 :(得分:4)
我建议制作一个存储库,并在那里硬连接所有的dotfiles。这样,您将只管理一个存储库,但您不必在主目录中包含.hgignore。我用Dropbox而不是Mercurial来做这件事,而且效果很好。
答案 2 :(得分:2)
虽然所有答案都很棒,但我决定采用自己的解决方案。
我要创建两个存储库:vim和home(我在不同的操作系统中使用vim,* nixes和windows,所以值得拥有单独的存储库)。 Vim将成为家中的一个子目录。
Home将成为一个dotfiles文件夹,其中包含一个符号链接所有内容的bash脚本,因此我可以克隆我的repo并运行该脚本。