跳转到主要内容

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 同步,它至少检查更改集消息中是否提到了一个工单。另一个可以有两种用法

  1. 一种是适用于传入事件的,将为更改集消息中提到的每个工单添加一条注释。总之,每个提交一条注释。

  2. 另一种是适用于 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 (17.0 kB 查看散列)

上传时间

由以下支持