2011-09-21 115 views
3

使用正则表达式集验证提交消息所需的所有步骤是什么? 我们希望在半集中式设置中工作,所以我需要针对开发人员克隆(local repository)和我们的中心克隆(global repository)的解决方案。我读了约Mercurial Hooks,但我有点失落如何把所有的东西放在一起。如何在Mercurial中验证并执行提交消息?

对于local repository我需要一种方法向我的开发人员分发验证脚本。我知道在克隆时钩子不会传播,所以我需要在每个新鲜克隆中“启用”它们。这将作为我们的PrepareEnvironement.bat脚本的一部分完成,我们在每个干净的克隆上运行。

为了安全起见,我需要在我的global repository上进行类似的验证。应该不可能推入global repository未验证的提交。我可以手动配置它 - 这是一次性工作。

我在Windows上,因此不应要求安装除TortoiseHG之外的任何内容。这已经是部署Mercurial的战斗。任何其他依赖不受欢迎。

+0

我刚刚发现http://stackoverflow.com/questions/2451560/how-do-you-access-the-commit-message-in-a-mercurial-in-process-hook和https:// bitbucket。组织/ DLS /提交-MSG-检查挂机/ SRC/ebaacb377171/commit-msg-check-hook.py。它看起来像一个开始... –

+0

你想执行什么样的验证?答案真的取决于这个......你是什么意思的“本地”或“全球”存储库?在Mercurial中没有这样的事情,我想你必须描述你的特定设置。顺便说一句,你可以在Windows上安装几乎所有的UNIX工具... – krtek

回答

2

您可以使用Spellcheck示例作为起点。在每个开发人员的配置,你需要使用下面的挂钩:

pretxnchangegroup - 一组变更集已纳入从另一个仓库本地之后运行,但在此之前它成为永久性的。

pretxncommit - 在本地创建新变更集后,但在变为永久变更之前运行。

对于集中回购,我认为你只需要pretxnchangegroup挂钩,除非在服务器上也可以发生提交。但是,如果远程回购是拒绝一个或多个正在推送的变更集的用户,那么您将需要每个开发人员的Histedit扩展名。这个扩展允许他们“编辑”已经提交的变更集。我认为在大多数情况下,本地钩子会解决问题,但正如你所说,“以防万一”。

更多details about handling events with hooks可以在Hg Book中找到。