Normally, I would enable extensions by adding the following to .hg/hgrc
:
[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cle
The current development version of Mercurial (to be released as Mercurial 1.3 on July 1st) supports a %include
directive in its configuration files.
That means that you can ask people to put
%include ../common-hgrc
into .hg/hgrc
. Having done that, you can then effectively control their Mercurial settings by committing changes to common-hgrc
. When they pull the change, the new settings will take effect.
Do note, that this is dangerous: anybody who can get you to pull changes into your repository can now insert arbitrary hooks into common-hgrc
and you will execute them on the next Mercurial command (even a "safe" command line hg status
).
You want mercurial to do something automatically when you clone a repo (update the hooks or config). Documentation says it is not possible and gives some very good reasons:
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
So clearly, mercurial itself won't solve your problem. You clearly state that you want nothing but mercurial to solve your problem, so the answer is: what you are asking is not possible.
The only way to solve your problem is that all your users will have to run/install at least once a given script that perform the actions you want, something like installing the right hooks.
If you want to be clever about this:
A bit complicated, but that's the closest I can imagine to your requirements: