2012-05-18 89 views
1

我正在尋找一種方式響應像提交信息創造(未更新)一TRAC票「黑客代碼,不殺你的狗(TODO:妥善解決這一問題,避免追小貓代替)」。如何從svn commit創建trac門票?

我希望TRAC系統對「TODO」關鍵字反應並創建票證與提交信息的內容,業主設置爲提交者和開放已提交引用。

在尋找,所以我發現Open and close trac tickets with a single commit基本上說,我怎麼能推出自己的解決方案。如果沒有可用的預製件,我會這樣做。那麼 - 有嗎?

回答

6

我建議看官方Trac的包蟒蛇:http://pypi.python.org/pypi/Trac/0.11.4和文檔http://www.edgewall.org/docs/tags-trac-0.11.7/epydoc/trac-module.html

這是我們用它來從一個python腳本創建Trac的門票,我認爲這是非常簡單易用。你可以運行這個python腳本作爲你的VCS的post commit鉤子。

您可以使用您的項目設置,然後新的買票啓動一個trac的環境和保存。有可能是多一點吧你,但是這應該給你一個好主意:

from trac.env import Environment 
from trac.ticket import Ticket 

env = Environment(projectSettings, create=0) 
tkt = Ticket(env) 
tkt['summary'] = 'first line of commit message' 
tkt['description'] = 'full commit message' 
tkt.save_changes(commitAuthor, '') 
+0

可能就是這樣。我將在下週嘗試一下,現在感謝您指出trac模塊文檔,我可以從中獲得幫助。 – mabi

4

不用說,當前Trac的穩定是0.12.3,但當然發展的需要,去與你的當前版本。 (在你的問題你沒告訴我們。)

關於你的問題,有a hint就如何落實在最前的CommitTicketUpdater從Trac的核心不同的功能。它具有更新和接近內置操作,所以你需要做一些改變,像這樣(基於current Trac trunk):

  • 創建一個額外的選項commands_create命令,即創建一個參考新票到變更,作爲一個空間分隔的列表
  • 在兩者的changeset_added添加一個類寬可變self.commentchangeset_modified後右comment分配
  • 添加模塊cmd_create等(未測試

    def cmd_create(self, ticket, changeset, perm): 
        if not self.check_perms or 'TICKET_CREATE' in perm: 
         # Commit messages in general is used for a ticket comment. 
         # New tickets require summary and we'll want description too, 
         # because comment is ignored on ticket creation. 
         # So we need to do message processing here beforehand. 
         ticket['comment'] = None 
         ticket['description'] = self.comment 
         ticket['owner'] = changeset.author 
         ticket['status'] = 'new' 
         ticket['summary'] = ' '.join(['TODO from', str(changeset.rev)]) 
         ticket.insert() 
    
  • 改變ticket_command所以正則表達式不僅將匹配默認功能票(S)對,但一元「TODO:」,以及(對不起,不能讓這個工作的權利-away現在)

  • 延伸私營模塊_parse_message之前if func:

    包括另一種情況下
  • 變化_update_tickets做出評論保存條件,因爲您將不再需要/想在新票附加註釋)

    if ticket['comment']: 
         ticket.save_changes(changeset.author, comment, date, db) 
    

好了,反問作爲如果你喜歡嘗試這種方法,那麼這是必需的。

+0

這真的很令人印象深刻,但超出了我的需要。 @ cdlk可能會出現,我將無法訪問系統,直到下週才嘗試。不管怎麼說,還是要謝謝你! – mabi

相關問題