Mercurial Hook 上的当前书签

Current bookmark on Mercurial Hook

我想确保当本地仓库更改推送到我们的主要远程仓库时,人们正在使用书签推送更改。因此,要么是他们第一次使用他们在本地添加的书签(在他们的克隆回购中)推送,要么他们正在远程推送到已经添加书签的行。

我已经在 .hgrc 中的 hgrc 文件中为 mercurial 设置了一个 python 挂钩,就像这样...

[挂钩] pretxnchangegroup.push = python:./hg/pushhook.py:bookmakrhook

当我推送时,我得到回调并调用我的函数。我怎样才能获得随着从用户的本地存储库到每个人都从中克隆的主存储库的变化而来的活动书签?

我的 python 挂钩文件中有这个签名:

def bookmarkhook(ui, repo, **kwargs)

我似乎无法对 repo 实例做任何事情,除了使用

获取分支等

repo[None].branches()

这是一个开始,因为我至少可以确保他们正在推动默认设置,而不是创建另一个头部(我只想要一个分支 - 默认设置和许多书签)。

书签在 pretxnclose 挂钩中可用。这对我有用(推送到 "release" 分支时需要书签)。处理推送到现有书签和推送新书签。

def require_bookmark_on_release(ui, repo, **kwargs):
    if repo[None].branch() == 'release' and not repo.currenttransaction().changes['bookmarks']:
        ui.warn('A bookmark is required when committing to the release branch\n')
        return True
    else:
        return False