2017-05-30 83 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