多くの人が接続するバザーサーバーがあります。すべてのユーザーに対していくつかの pre-commit フックを実行したいのですが、接続しているすべてのコンピューターを制御することはできないため、これらのフックをサーバーで実行するのが最も理にかなっています。これは簡単な作業だと思っていましたが、今は行き詰まっています。
私の現在のステータスは次のとおりです。
- ワークステーションにスクリプトをインストールすると、フックが機能します。
- サーバーにスクリプトをインストールすると、そこで行われたコミットに対して機能します。
- サーバーにインストールしてワークステーションにコミットすると、ロードされますが無視されます。
BZR_PLUGIN_PATH
サーバーとサーバーの両方でスクリプトを実行しようとしましたが~/.bazaar/plugin
、そうすると、ログに次のように表示されます。
0.112 looking for plugins in /home/me/.bazaar/plugins
0.122 looking for plugins in /usr/local/lib64/python2.6/site-packages/bzrlib/plugins
0.123 Plugin name my_test_hook already loaded
これはリモート ワークステーションからのものであるため、プラグインは明らかにロードされますが、実行されません。私はそれを馬鹿にしたので、それが現在行っていることは次のとおりです。
def my_test_hook (local, master, old_revno, old_revid,
future_revno, future_revid, tree_delta, future_tree):
raise TipChangeRejected("Rejected")
したがって、それが実行されているときは明らかです。誰かがこれを機能させるために何をする必要があるか教えてもらえますか? つまり、ワークステーションで行う場合"bzr ci -m '...'"
、サーバーのフックでコミットをキャンセルして「拒否」と言う必要がありますか。
残念ながら、ドキュメントはあまり役に立ちませんでした。