2017-05-30 8 views
0

ローカルリポジトリの変更がメインのリモートリポジトリにプッシュされたときに、ブックマークを使用して変更が行われていることを確認したいと思います。そのため、初めてローカルに追加したブックマークを初めてプッシュするか、すでにブックマークした行にリモートからプッシュしています。Mercurial Hookの現在のブックマーク

私は

[フック] pretxnchangegroup.push =のpython ...このよう.hgrc内部hgrcファイルに水銀のためのPythonのフックを設定している:./ HG/pushhook.py:bookmakrhook

私がプッシュすると、コールバックが発生し、funcが呼び出されます。どのようにして、ユーザーのロケコからすべてのクローン作成元のメインリポジトリへの変更が入っているアクティブブックマークを取得できますか?

私はPythonのフックファイルにこの署名を持っている:

デフbookmarkhook(UI、レポ、** kwargsから)

私は枝などを取得する以外、レポインスタンスで何もすることができないよう

レポ[なし] .branches()

私は、少なくとも、彼らがデフォルトに押して、別のヘッド(私は1つのブランチのみを望んで作成されていないことを確認することができますので、これは、スタートです - デフォルト、および多くをブックマーク)。

+0

プッシュリモートサーバ上のブックマークがすでに存在しているときに、私はrepo._bookmarksでそれを得ることができ、[OK]を、ので、私はブックマークにプッシュしていますチェックするために、これは結構ですが、最初の時間ローカルリポジトリからリモートリポジトリへのリンクが実際にリモートリポジトリにブックマークを作成するために発生した場合、ブックマークはリモートリポジトリにはまだ存在しないため、存在しないため、_bookmarksのチェックは失敗します。ブックマークが最初に作成されているかどうかを確認する方法が必要です。リモートブック上の_bookmarksを取得するだけでなく、 –

+0

リモートのブックマークが存在しないために 'hg incoming'経由でチェックするのはどうでしょうか? – planetmaker

答えて

1

ブックマークは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