【发布时间】:2018-03-05 20:20:43
【问题描述】:
我已经在我的编程项目中成功使用Mercurial 有一段时间了,因此让它同时处理我的其余版本控制需求是合乎逻辑的步骤。朝着这个方向迈出的第一步是让 Mercurial 处理我在 Linux 系统上手动修改的配置文件。不幸的是,我似乎在这里遇到了一些障碍:
Mercurial 不存储文件元数据(所有权、权限、扩展属性)。
Mercurial 不会处理不在存储库目录中的文件。
我相信我已经为 (1) 找到了 solution,尽管它显然涉及修改单独的 utility 的来源和一点 hgrc 魔法。
第二点似乎更棘手:出于各种原因,我不想将 Mercurial 存储库放在文件系统根目录 (/)。不幸的是 - 对于公认的 a very good reason - Mercurial 不会直接或通过符号链接处理位于存储库根目录之外的文件。
我可能会编写一个包装脚本,例如使用mount --bind 或 unionfs 允许 Mercurial 访问根文件系统。我过去写过一个类似的脚本,但它绝不是透明的,而且我在使用它时不得不跳过很多圈 - 正确地执行它会很棘手,特别是如果我想处理绝对文件路径。
在这一点上,我开始觉得我必须将许多本土解决方案堆叠在一起才能让 Mercurial 在这个用例中工作——也许太多了。总会有我偶尔碰到的粗糙边缘。
是否有针对此用例的现有完整解决方案?允许
hg透明地处理系统文件的 Mercurial 扩展或包装脚本?或者,非常不情愿地 - 是否有 现代 版本控制系统或其他版本控制解决方案可以开箱即用地做到这一点?
【问题讨论】:
-
使用个人配置文件(用户目录中的所有点文件),您通常会创建从预期位置到存储库中实际文件的符号链接...您是否考虑过在这里这样做?
-
@Ludovic:你会为
/etc/fstab这样做吗? -
我确实不会,但这主要是因为我一开始就不会把它放在 Mercurial 中。这些文件在我的计算机之间不太可能相同(除非您负责一个拥有所有相同 PC 的农场),并且在单台计算机的生命周期内不太可能发生太大变化(不会到我需要修改的地步)至少控制它)。我的观点主要是讨论以另一种方式进行操作:与其将外部文件带入 repo,不如将 repo 文件带入外部如何?但是“不,我不能/不会”是对此的有效答案:)