通常,我会通过将以下内容添加到.hg/hgrc
来启用扩展程序:
[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
但是,我希望对此配置进行版本控制,即存储库的一部分,以便为其他任何人(同事,构建计算机)克隆存储库启用它。请注意,无论何时克隆存储库,都不应要求任何来启用这些扩展。
似乎不可能来自the documentation,但有没有人知道任何可以帮助我的巧妙技巧?
答案 0 :(得分:9)
您希望mercurial在克隆repo时自动执行某些操作(更新挂钩或配置)。 Documentation说这是不可能的,并给出了一些很好的理由:
Hooks do not propagate
In Mercurial, hooks are not revision controlled, and do not propagate when you clone,
or pull from, a repository. The reason for this is simple: a hook is a completely
arbitrary piece of executable code. It runs under your user identity, with your
privilege level, on your machine. No comments
It would be extremely reckless for any distributed revision control system to
implement revision-controlled hooks, as this would offer an easily exploitable way to
subvert the accounts of users of the revision control system. No comments
很明显,mercurial本身不会解决你的问题。你明确表示你只想要解决你的问题,所以答案是:你所要求的是不可能的。
解决问题的唯一方法是,所有用户必须至少运行/安装一次执行所需操作的给定脚本,例如安装正确的挂钩。
如果你想聪明一点:
有点复杂,但这是我能想象到的最接近你的要求:
答案 1 :(得分:6)
Mercurial的当前开发版本(将于7月1日作为Mercurial 1.3发布)在其配置文件中支持%include
指令。
这意味着你可以要求人们放
%include ../common-hgrc
进入.hg/hgrc
。完成后,您可以通过将更改提交到common-hgrc
来有效地控制其Mercurial设置。当他们提取更改时,新设置将生效。
请注意,这很危险:任何可以让您将更改提取到存储库的人现在可以将任意挂钩插入common-hgrc
,然后您将在下一个Mercurial命令(甚至是“安全”命令)上执行它们行hg status
)。
答案 2 :(得分:1)
您可以通过ProjRC extension解决该问题。
“此扩展程序使Mercurial查找并解析.hg / projrc以获取其他配置设置。该文件在克隆和拉取时传输(但从不在推送时)“
答案 3 :(得分:0)
如何创建从.hg/hgrc
到例如customhg/hgrc
的链接.hg/hgrc
以便版本化。然后你需要创建一个钩子,将其复制回{{1}} - 例如每次更新后。