我一直在努力
def debug_hook(ui, repo, **kwargs):
changectx = repo[None]
ui.status('change.desc: %s\n' % changectx.description())
return True
但它总是打印一个空字符串。这是因为它是一个预提交钩子并且消息还不可用吗?还是我只是错过了一些明显的东西?
我一直在努力
def debug_hook(ui, repo, **kwargs):
changectx = repo[None]
ui.status('change.desc: %s\n' % changectx.description())
return True
但它总是打印一个空字符串。这是因为它是一个预提交钩子并且消息还不可用吗?还是我只是错过了一些明显的东西?
事实证明,我最初的方法有两个问题:
precommit
事件发生在提交之前,因此正在处理的提交的元数据还不存在。通过使用pretxncommit
,元数据存在,但事务尚未提交到数据库。changectx = repo[None]
为您提供工作目录的更改上下文。但是我们想要当前提交的信息,因此使用它可以changectx = repo['tip']
为我们提供最新的元数据。请注意,如果您使用changectx = repo['tip']
该precommit
事件,您实际上会处理最后一次提交,而不是您正在处理的当前提交。
我认为你是对的,预先提交的消息还不存在。如果你使用 pretxncommit 它会,但我不能 100% 确定它允许你在那个时候做什么,因为交易几乎完成了。