Python Mercurial Hook上的当前书签

Python Mercurial Hook上的当前书签,python,mercurial,hook,mercurial-hook,Python,Mercurial,Hook,Mercurial Hook,我想确保当本地回购变更被推送到我们的主远程回购时,人们用书签推送变更。因此,这不是他们第一次使用在克隆回购协议中本地添加的书签进行推送,也不是他们远程推送到已经添加书签的行 我已经在.hgrc内的hgrc文件中为mercurial设置了一个python钩子,如下所示 [钩子] pretxnchangegroup.push=python:./hg/pushhook.py:bookmakrhook 当我按下按钮时,我得到回调,我的func被调用。我如何才能获得从用户的loca repo到每个人都从中

我想确保当本地回购变更被推送到我们的主远程回购时,人们用书签推送变更。因此,这不是他们第一次使用在克隆回购协议中本地添加的书签进行推送,也不是他们远程推送到已经添加书签的行

我已经在.hgrc内的hgrc文件中为mercurial设置了一个python钩子,如下所示

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

当我按下按钮时,我得到回调,我的func被调用。我如何才能获得从用户的loca repo到每个人都从中克隆的主repo的更改所带来的活动书签

我的python钩子文件中有以下签名:

def书签用户界面,回购,**kwargs

我似乎无法对repo实例执行任何操作,除了获取分支等

回购[无]。分行


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

该书签在pretxnclose挂钩中可用。这对我来说很有效,在推到发布分支时需要一个书签。处理推送到现有书签和推送到新书签的操作

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

好的,当远程服务器上已经有书签时,我可以通过repo获得它。\u bookmarks,所以我可以检查我是否正在推送书签,但是第一次从本地推送到远程repo时,实际上是在远程repo上创建书签,书签还没有在远程repo上,因此不存在,因此支票书签将失败。因此,我需要一种方法来查看是否第一次创建了书签,而不仅仅是在远程回购上获取_书签。通过hg incoming检查远程书签是否不存在如何?