Mercurial的一套实用钩子
项目描述
hghooks
hghooks是一个简单的模块,为Mercurial钩子系统添加了几个有用的钩子。
目前包括以下钩子:
Python文件的pep8检查
Python文件的pyflakes检查
JavaScript文件的jslint检查
检查Python文件中遗忘的pdb语句
Trac集成。这包括:- 确保在变更集消息中至少提及一个工单 - 使用变更集更新Trac工单
文档
安装
hghooks作为Python egg分发,因此安装非常简单。您只需输入以下命令
easy_install hghooks
然后Easy Install将前往Cheeseshop并为您抓取最新的hghooks。它还将为您免费安装它 :-)
使用
要使用此包提供的钩子之一,编辑您的Mercurial存储库的hgrc文件,并添加以下行
[hooks] pretxncommit.pep8 = python:hghooks.code.pep8hook pretxncommit.pyflakes = python:hghooks.code.pyflakeshook pretxncommit.pdb = python:hghooks.code.pdbhook pretxncommit.jslint = python:hghooks.code.jslinthook
您可以添加所需的所有钩子。从版本0.2.0开始,它还支持pretxnchangegroup钩子。
当使用pretxnchangegroup钩子时,hghooks的默认行为是仅检查正在推送的最后一个修订。如果您想检查每个新修订,您可以通过向您的hgrc文件添加以下行来激活hghooks的严格模式
[hghooks] strict_checking = true
这样,您将强制每个提交的正确性。违规提交需要在本地使用队列进行修复。
如何跳过钩子
如果您需要避免特定更改集的钩子,可以在提交信息中添加以下一个或多个关键词:no-pep8、no-pyflakes 和 no-pdb。
另一方面,如果您想在特定文件中避免钩子,可以在文件中的某处添加一条注释来说明。例如
# hghooks: no-pyflakes no-pdb no-jslint
在这种情况下,pyflakes 和 pdb 钩子将跳过此文件。"# hghooks:" 前缀很重要,您必须完全按照这种方式输入。然后,以空格分隔添加 skip 关键词。
跳过特定的pep8错误
如果您想忽略一些 pep8 错误,可以通过在您的 hgrc 文件中添加 [pep8] 配置部分来实现。例如,如果您想允许超过 79 个字符的行,您将添加此配置
[pep8] ignore = E501
ignore 选项值的格式是一个由空格分隔的 pep8 错误或警告列表。请查阅 pep8 文档以查看这些代码。
注意:这仅适用于 pep8 0.6.0 及更高版本。
Trac集成
从版本 0.3.0 开始,对 Trac 集成提供了一些有限的支持。
目前,有两个对使用 Trac 作为其项目系统的用户有用的钩子。第一个是适用于集中式存储库中 pretxnchangegroup 事件的钩子,该存储库与 Trac 同步,它至少检查更改集消息中是否提到了一个工单。另一个可以有两种用法
一种是适用于传入事件的,将为更改集消息中提到的每个工单添加一条注释。总之,每个提交一条注释。
另一种是适用于 changegroup 事件的。所有更改集都将组合在一个注释中,并添加到更改集消息中提到的每个工单中。所以总结起来,它将按推送次数注册注释。
要使用这些钩子,您必须使用您想要集成的 Trac 环境路径配置您的存储库。在您的 .hg/hgrc 存储库配置中写入以下内容
[trac] environment = /full/path/to/your/trac/environment
现在您可以在同一个配置文件中添加这两个钩子
[hooks] pretxnchangegroup.trac = python:hghooks.trachooks.ticket_checker incoming.trac = python:hghooks.trachooks.ticket_updater
或
[hooks] pretxnchangegroup.trac = python:hghooks.trachooks.ticket_checker changegroup.trac = python:hghooks.trachooks.ticket_updater
目前这些钩子检查您的更改集消息中的以下模式:[操作] [工单] [编号],其中操作可以是以下任何一种:‘close’、‘closed’、‘closes’、‘fix’、‘fixed’、‘fixes’、‘addresses’、‘references’、‘refs’、‘re’ 和 ‘see’,工单可以是‘ticket’、‘issue’ 或 ‘bug’,编号是带有前导 # 字符的工单编号。
在 ticket_checker 钩子中,仅检查工单编号的存在以及这些操作中的任何一个。在 ticket_updater 中,根据操作本身进行额外的更改。并在工单中添加一个可配置的消息。
如果您使用 Trac 0.12 并在您的环境中配置了多个存储库,您必须告诉钩子您想要使用哪一个。为此,在存储库 hgrc 配置文件的 [trac] 部分中添加以下选项
[trac] repo_name = your_repo_name_in_trac
如果您不指定此选项,存储库应该是 Trac 中的默认存储库。否则,更改集的链接将无法正常工作。
您还可以配置工单中的消息外观。为此有两个配置选项
[trac] msg_template = (At [%(changeset)s]) %(msg)s changeset_style = long-hex
msg_template 指定注释文本的外观。它有两个占位符:一个用于更改集 ID,另一个用于更改集描述或消息。如上例所示,通过将更改集放在括号中,我们自动在工单注释中生成 Trac 链接到该更改集。
另一个选项 changeset_style 可以有三个值之一
number:带有修订版号的整数
long-hex:更改集的完整十六进制散列
short-hex:长十六进制的前12个字符
默认情况下,short-hex用作changeset_style。
如果您对hghooks提供的操作不够用,也可以添加更多操作。用于允许此功能的扩展机制基于setuptools入口点,因此您必须熟悉它们才能使用。目前有两个入口点
hghooks.trac.ticket_commands
hghooks.trac.token_commands
每个入口点都应指向一个可调用的函数,该函数返回一个字典,其中键是操作名称,值是可以接收票据并修改它们的可调用的函数。
变更
0.7.0 (2016-05-05)
增加对Mercurial >= 3.6.1的支持。感谢Ernesto Revilla。
增加检测pudb语句的支持。感谢Andrey Kolomoets。
0.6.0 (2013-04-17)
默认情况下,只检查推送的最后版本。有一个可配置的选项可以恢复默认的严格行为。感谢Gabriel Rodriguez。
支持pep257。感谢pszablow。
0.5.5 (2013-02-01)
修复对1.2版本以上新版本的pep8支持。
0.5.4 (2012-10-12)
修复文档rst错误。
0.5.3 (2012-10-12)
从依赖项中删除pep8、pyflakes和pyjslint,因为它们是可选的。
将Trac作为一个可选依赖项。
0.5.2 (2012-01-12)
修复pyjslint集成。感谢Alejandro Blanco。
0.5.1 (2011-11-16)
使用新的pyjslint 0.3.1。
0.5.0 (2011-11-06)
通过pyjslint包增加对jslint的支持。由Manuel Viera和Pablo Martín贡献。
在trachooks.ticket_updater钩子中增加对changegroup钩子类型的支持。在这种情况下,将所有更改集消息合并为一条消息,并只向Trac票据添加一条评论。Manuel和Pablo。
在trachooks.ticket_updater钩子中使用服务器时间。Manuel和Pablo。
0.4.3 (2011-10-23)
与pyflakes 0.5.0兼容,并支持旧版本。
修复由Waldemar Kornewald处理的pep8 –ignore处理问题。
0.4.2 (2011-02-24)
修复提交信息中非ASCII字符的bug。
0.4.1 (2011-01-11)
修复在运行pyflakes钩子时对语法错误文件的bug。
0.4.0 (2011-01-09)
让pyflakes钩子忽略带有“pyflakes:ignore”注释的代码行。
0.3.2 (2010-11-08)
修复文档。
0.3.1 (2010-10-21)
允许忽略pep8错误。
0.3.0 (2010-10-17)
添加Trac集成钩子。
一个pretxnchangegroup钩子,用于检查更改集消息中是否存在对票据的提及。
一个传入钩子,将更改集消息添加到Trac票据的评论中。
0.2.1 (2010-10-14)
修复了安装问题,因为setup.py导入了pep8和pyflakes。
修复了pdb检查器在添加新文件时的bug。
0.2.0 (2010-10-14)
支持pretxnchangegroup钩子。
0.1.2 (2010-08-31)
修复了关于删除文件时错误的第2号问题。
0.1.1 (2010-06-13)
添加了关于如何跳过检查的文档。
0.1.0 (2010-06-13)
初始发布。
项目详情
hghooks-0.7.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a8f3572d846c1ed6d788ab82fa982de842d7461e5b17428afbb6f985b0bdeba1 |
|
MD5 | d5487d9aa6c26d5d3af75826054401c4 |
|
BLAKE2b-256 | bcd7e8bb274c350f5a89545408557e345a5cf6adb77c6d14141ced6046ba8522 |