通常,我会通过添加以下内容来启用扩展.hg/hgrc
:
[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
但是,我希望此配置进行版本控制,即存储库的一部分,以便其他任何人(同事、构建机器)克隆存储库时都可以使用它。请注意,任何克隆存储库的人都不需要这样做anything启用这些扩展。
看来不可能从文档 http://www.selenic.com/mercurial/wiki/UsingExtensions,但是有谁知道任何可以帮助我的巧妙技巧吗?
您希望 Mercurial 在克隆存储库时自动执行某些操作(更新挂钩或配置)。文档 http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html说这是不可能的,并给出了一些很好的理由:
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 本身并不能解决你的问题。您明确表示您只想用善变来解决您的问题,所以答案是:您所要求的是不可能的。
解决问题的唯一方法是,所有用户都必须至少运行/安装一次给定脚本来执行您想要的操作,例如安装正确的挂钩。
如果你想巧妙地解决这个问题:
- 创建一个要运行的一次性脚本,该脚本将安装一个挂钩以将正确的配置复制到 .hg 或用户中
- 确保挂钩安装后可以更新脚本以将配置更新分发给用户
- 让钩子添加一些特殊标记来提交消息
- 拒绝不携带特殊消息的中央存储库提交
有点复杂,但这是我能想象到的最接近您的要求的:
- 用户运行一次脚本,然后他们就忘记了
- 您可以确保如果没有运行它,他们就无法提交到您的中央存储库
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)