2017-05-30 84 views
0

我想确保当本地回购更改被推送到我们的主远程回购时,人们正在用书签推送更改。因此,无论是第一次推送书签时,他们本地添加了书签(在他们的克隆回购中),或者他们正在远程推送已经添加了书签的行。Mercurial Hook上的当前书签

我已经设置了一个python钩水银在hgrc文件内.hgrc像这样...

[钩] pretxnchangegroup.push =蟒:./ HG/pushhook.py:bookmakrhook

而当我推动,我得到我的回调,我的func被调用。我怎样才能获得积极的书签,从用户的本地回购更改到每个人都克隆的主要回购?

我在蟒蛇钩子文件有这样的签名:

高清bookmarkhook(UI,回购,** kwargs)我似乎

不能做回购例如什么,只得到分支等与

回购[无] .branches()

这是一个开始,因为我至少可以确保他们推为默认值,而不是创建另一个头(我只想要一个分支 - 默认情况下,许多书签)。

+0

好了,所以当在远程服务器上的书签了,我可以用repo._bookmarks得到它,所以这是为我好,检查我推到书签,而是在第一时间推从本地到远程repo发生实际上创建远程repo书签,书签不在远程repo尚未存在,因此没有存在,所以check _bookmarks将失败。所以我需要一种方法来查看是否第一次创建书签,而不仅仅是获取远程回购库上的_bookmarks。 –

+0

如何通过'hg incoming'检查远程书签不存在? – planetmaker

回答

1

书签在prexxclose挂钩中可用。这适用于我(推送到“发布”分支时需要书签)。处理推送到现有书签并推送新书签。

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