api – 如何在Mercurial进程内钩子中访问提交消息?

我一直在努力
def debug_hook(ui,repo,**kwargs):
    changectx = repo[None]
    ui.status('change.desc: %s\n' % changectx.description())
    return True

但它总是打印一个空字符串.这是因为它是一个precommit钩子,而且消息还没有?或者我只是遗漏了一些明显的东西?

解决方法

事实证明,我的初始方法存在两个问题:

>正如jk所指出的,precommit事件发生在提交之前,因此正在处理的提交的元数据尚不存在.相反,通过使用pretxncommit,元数据存在,但事务尚未提交到数据库.
>使用changectx = repo [无]为您提供工作目录的更改上下文.但我们想要当前提交的信息,所以使用changectx = repo [‘tip’]代替我们提供最新的元数据.

请注意,如果将changectx = repo [‘tip’]与precommit事件一起使用,您实际上将处理最后一次提交,而不是当前正在处理的提交.

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...