2008-12-04 40 views
2

我們的開發過程是通過大量bash和php腳本(包括顛覆鉤子腳本)高度自動化的。這些腳本與我們的Bugzilla 3.0安裝集成了許多東西。如何從bash和php腳本更新Bugzilla錯誤?

但是目前的整合方法是一堆直接更新bugzilla數據庫的SQL調用 - 這顯然有一些缺點 - 包括讓我擔心升級到3.2以防數據庫模式發生變化!

例如,要爲bug添加評論,我要在longdescs表中執行INSERT。

所以我的(略囉嗦)的問題是:

  • 我應該使用的Bugzilla Web服務(如果有的話,是有比沒有得到我的Bugzilla的API文檔以外的任何好的文檔以加快速度)
  • 或者,我是否應該使用其他一些Bugzilla API(直接perl調用?) - 並且在這方面有沒有像樣的doco?
  • 或者,我應該繼續做我在做什麼(直接SQL調用),因爲分貝不會帶來太大變化,它「做工作」

回答

3

根據Bugzilla的Web服務API,一些所需的功能(例如更改錯誤狀態)尚不可用,因此目前直接的SQL調用似乎是最合適的選擇。

數據庫模式在版本3.0和3.2之間沒有發生顯着變化,所以這是一個切實可行的方法。

2

僅供參考,在Bugzilla 3.2發行版中,有一個contrib/bz_webservice_demo.pl文件,其目的是「顯示如何通過XMLRPC與Bugzilla交談」。

0

小心!一些數據庫更改也意味着其他更改。通過向longdescs添加一行來爲bug添加註釋,但您還應該更新表bug中的delta_ts。

直到Web服務可用,以下是我要做的:使用您要從外殼執行的UI執行操作。 (假設MySQL)使用'mysqlbinlog'查看數據庫的二進制日誌,您將看到Bugzilla在執行任何操作時通常執行的語句。

如果您希望添加的評論在下次有人進行更改時寄出,請單獨保留bugs.last_diff。如果您不想將添加的註釋郵寄出去,請更新bugs.last_diffed,正如您對bugs.delta_ts所做的那樣。

Bugzilla在數據庫中有許多細微的依賴關係,您必須遵守,否則您可能會得到一些意想不到的結果。