2013-10-10 119 views
0

我们有一个bazaar服务器,许多人连接到该服务器。我想为每个用户运行一些预先提交的钩子,对我而言,在服务器上运行这些钩子是最有意义的,因为我无法控制所有连接的计算机。我认为这是一个简单的任务,但我现在卡住了。Bazaar挂钩检查服务器上的提交消息

我目前的状态是:

  • 如果我安装我的工作站将挂钩工作的脚本。
  • 如果我在服务器上安装脚本,它将在此处执行提交。
  • 它安装在服务器上,我承诺在我的工作站上加载但是被忽略的 。

我试过有在服务器上都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 '...'"时,是否希望我的服务器中的钩子取消提交并说“拒绝”。

该文档并没有真正帮助我很多不幸的事情。

回答

0

答案是:你不能。

远程主机只能看到一个推后,然后停止提交已经太晚了,所以这样一个挂钩必须在每个客户端上本地运行。