Bazaar挂钩检查服务器上的提交消息

时间:2013-10-10 13:38:13

标签: bazaar pre-commit-hook

我们有一个集市服务器,许多人都可以连接。我想为每个用户运行一些预提交钩子,对我来说,在服务器上运行这些钩子是最有意义的,因为我无法控制所有连接的计算机。我假设这是一项简单的任务,但我现在被困住了。

我目前的状态是:

  • 如果我在我的工作站上安装脚本,那么钩子就会起作用。
  • 如果我在服务器上安装脚本,它将适用于在那里完成的提交。
  • 随着它安装在服务器上,我在我的工作站上提交它 被加载但被忽略。

我已尝试在服务器上同时使用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 '...'"时,我是否希望服务器中的挂钩取消提交并说“已拒绝”。

遗憾的是,文档并没有真正帮助我。

1 个答案:

答案 0 :(得分:0)

答案是:你做不到。

远程主机只看到后推,然后停止提交为时已晚,所以这样的钩子必须在每个客户端本地运行。