0

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

我现在的状态是:

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

我已经尝试在服务器上和服务器上都使用脚本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 '...'"在我的工作站上做时,我是否希望我的服务器中的钩子取消提交并说“拒绝”。

不幸的是,文档并没有真正帮助我。

4

1 回答 1

0

答案是:你不能。

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

于 2013-10-14T12:08:57.053 回答