你如何打电话给你的家?我想了解一些关于subrepos的信息

时间:2010-11-30 12:36:36

标签: linux macos version-control mercurial

我开始在mercurial中将一些文件放在版本控制中。它从.vim开始,然后用.bashrc开始,现在我意识到许多其他文件也可以被版本化(例如.zshrc,由taskwarrior创建的.task目录等)

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

版本回家不是一个好主意,因为我需要编辑我的.hgignore,每次添加我不想要版本化的新文件夹时,我都需要编辑.hgignore

所以我想到了两种方法:

  • 创建一个“dotfiles”仓库及其中的所有内容(vim,bash,screenrc),在家中克隆并在家中创建符号链接;
  • 为每个配置创建一个“dotfiles”repo和repo(vim,bash,screenrc,cvsrc等)。这个“dotfiles”仓库将其他存储库作为子模块,但仍需要在家中创建符号链接。

您是否认为在第二种方法中为每个配置创建存储库是否过度?你有其他建议吗?我想在linux / mac上使用这种方法。我也在windows上使用vim,这就是为什么我要用子模块制作不同的存储库 - 在windows中我只是克隆vim repo:home repo将vim作为子模块。

(我正在使用一个bitbucket私人帐户。是否有可能在那里有子模块?还有一件事:是否有可能将git子模块作为子模块存放在一个mercurial存储库中?怎么样?)

谢谢!

3 个答案:

答案 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并运行该脚本。