2

我们的开发过程通过大量的 bash 和 php 脚本(包括 subversion 挂钩脚本)实现了高度自动化。这些脚本做了很多事情来与我们的 Bugzilla 3.0 安装集成。

但是当前的集成方法是一堆直接更新 bugzilla 数据库的 SQL 调用——这显然有很多缺点——包括让我担心升级到 3.2,以防数据库模式发生变化!

例如,要向错误添加注释,我正在对 longdescs 表执行 INSERT。

所以我的(有点啰嗦)的问题是:

  • 我应该使用 Bugzilla WebServices 吗(如果是这样,除了 Bugzilla API 文档之外是否还有其他没有让我快速上手的好的文档)
  • 或者,我是否应该使用其他一些 Bugzilla API(直接 perl 调用?) - 再说一次,这有什么像样的 doco 吗?
  • 或者,我是否应该继续做我正在做的事情(直接 SQL 调用),因为 db 并没有发生太大变化并且它“完成了工作”
4

3 回答 3

3

根据 Bugzilla WebServices API,一些所需的功能(例如更改错误状态)尚不可用,因此目前,直接 SQL 调用似乎是最合适的选择。

数据库模式在 3.0 和 3.2 版本之间没有显着变化,因此这是一种实用的前进方式。

于 2008-12-05T12:06:43.500 回答
2

仅供参考,在 Bugzilla 3.2 发行版中,有一个contrib/bz_webservice_demo.pl文件旨在“展示如何通过 XMLRPC 与 Bugzilla 对话”。

于 2008-12-12T17:27:07.257 回答
0

当心!一些数据库更改也意味着其他更改。通过向 longdescs 添加一行来为错误添加注释是可行的,但您还应该更新表错误中的 delta_ts。

在 Web 服务可用之前,我会这样做:使用您想从 shell 执行的 UI 执行操作。(假设 MySQL)使用 'mysqlbinlog' 查看数据库的二进制日志,您会看到 Bugzilla 在执行任何操作时通常会执行哪些语句。

如果您希望您添加的评论在下次有人进行更改时被邮寄,请不要理会 bugs.last_diffed。如果您不希望您添加的评论被邮寄出去,请像对 bugs.delta_ts 所做的那样更新 bugs.last_diffed。

Bugzilla 在数据库中有许多微妙的依赖关系,您必须尊重这些依赖关系,否则您可能会得到一些意想不到的结果。

于 2009-10-01T23:41:29.170 回答