2011-08-03 21 views
2

コミット時にリビジョン番号をコミット済みブランチのファイルに書き込んで、この変更がコミットに含まれるようにします。Bazaar:変更がコミットされたコミット時の自動ファイル変更

私はフックを見ましたが、pre_commitフックはチェンジセットが作成された後にのみ実行されるため、それによって実行される変更はコミットされません。

私は、関連する質問が見つかりました:、 Bazaar: Modify file content before commit via hook? をしかし、提案のbzr-キーワードのソリューションは、動作しないか、その書き込みの変換は、コミット時に適用されていないよう:

``のbzr commit``が暗黙のうちにありません ファイルを書き込んだ後に書き込みコンバータを適用します。 コンテンツフィルタを提供する特定のプラグインに意味がある場合、プラグインは通常、 の `` start_commit``または `` post_commit``フックを使用してこの効果を達成できます。

私はpre_commitフックの問題に戻ってきます。

私の理由:私のソフトウェアは、コンパイル時のバージョンファイルからバージョンを読み込みます。バージョンは、メイン番号、支店番号、リビジョン番号(5.3.78など)で構成されています。コミット時に自動的にバージョンファイルに実際のバージョンを書きたいと思います。このファイルを変更する唯一の方法であるため、

答えて

4

あなたは前にコミットstart_commitフックを使用する必要がありますコミットツリー上で実行される前に呼び出されhttp://doc.bazaar.canonical.com/bzr.2.3/en/user-reference/hooks-help.html#start-commit

start_commit

。コミット開始フックは、コミットが行われる前にツリーを変更することができます。 start_commitは、コミットが実行されているbzrlib.mutabletree.MutableTreeで呼び出されます。

+0

ありがとうございました - それは私の質問でも書かれていました...私はちょうど何らかの理由で分岐が呼び出されると期待していました... mutabletreeは完全にうまく動作します。 – jvm

+1

Bazaarプラグイン[Bazaar Copyright Updater](https://launchpad.net/bzr-text-checker)は、 'start_commit'フックの良い例を示しています。例のために – tvStatic

2

start_commit.pyという名前のstart_commitにフックするプラグインスクリプトがあります。これにより、コミットが発生するたびにプロジェクトツリーのベースから.startcommitという名前のシェルスクリプトが呼び出されます。これを元帳データと一緒に使用して、各コミット前にすべての残高を照合します。

from bzrlib import errors, mutabletree 

def start_commit(tree): 
    """This hook will execute tree/on-commit.""" 
    import os,subprocess 
    from bzrlib import errors 
    abspath = tree.abspath('.startcommit') 
    # if there is no on-commit, bail 
    if not os.path.exists(abspath): 
     return 
    try: 
     subprocess.check_call(abspath) 
    # if precommit fails (process return not zero) cancel commit. 
    except subprocess.CalledProcessError: 
     raise errors.BzrError("on-commit failed") 

mutabletree.MutableTree.hooks.install_named_hook('start_commit', start_commit, 
    "tree on-commit") 

私はこのプラグインを書いていない、と私はクイック検索でからそれを得たところ、私は見つけることができないので、ここではソース(〜/ .bazaar /プラグイン/ start_commit.py)です

誰かが知っていれば、このスニペットの元の著者には喜んでいただけると思います。そうでなければ、私はそれが助けてくれることを望む

+0

ありがとう - 私はそれを同様のやり方で働かせました。 – jvm

関連する問題