为系统文件创建和使用Mercurial存储库

时间:2011-12-04 17:43:02

标签: linux mercurial

我已经成功地将Mercurial用于我的编程项目已有一段时间了,所以让它处理我的其他版本需求也是合乎逻辑的一步。这方面的第一步是让Mercurial处理我在Linux系统上手动修改的配置文件。不幸的是,我似乎在这里遇到了一些障碍:

  1. Mercurial不存储文件元数据(所有权,权限,扩展属性)。

  2. Mercurial不会处理不在存储库目录中的文件。

  3. 我相信我为(1)找到solution,虽然它显然涉及修改单独utilityhgrc魔法的来源。

    第二点似乎比较棘手:出于各种原因,我不想在文件系统根目录(/)放置Mercurial存储库。不幸的是 - 对于公认的a very good reason - Mercurial不会直接或通过符号链接处理位于存储库根目录之外的文件。

    我可能会写一个包装脚本,可以使用例如mount --bindunionfs允许Mercurial访问根文件系统。我过去写了一个类似的脚本,但它绝不是透明的,我在使用它时不得不跳过很多箍 - 正确地做它会很棘手,特别是如果我想处理绝对文件路径。

    此时我开始觉得我必须将许多本土解决方案堆叠在一起,以使Mercurial在这个用例中工作 - 也许太多了。我偶尔会遇到粗糙的边缘。

    • 此用例是否存在完整的解决方案? Mercurial扩展或包装脚本,允许hg透明地与系统文件一起工作?

    • 或者 - 并且非常不情愿 - 是否有一个现代版本控制系统或其他版本控制解决方案可以开箱即用?

2 个答案:

答案 0 :(得分:2)

  

或者 - 非常不情愿 - 是否有现代版本   控制系统或其他版本控制解决方案,将实现这一目标   盒子?

Flyback(类似于Apple的“Time Machine”)不是VCS,但如果您想要的只是线性历史记录,那么它可能正是您所需要的。

答案 1 :(得分:1)

我终于找到了使用git的直接解决方案。更具体地说,git允许工作目录({{1>}术语中的工作树)远离存储库本身。我所要做的就是:

  • 在所需位置创建一个安全目录:

    git
  • 在上一个目录中初始化# mkdir -p /root/git # chmod 700 /root/git 存储库:

    git
  • 修改# cd /root/git # git init 以包含.git/config选项,方法是在core.worktree部分添加worktree = /etc

  • 通常使用[core]

    git