svn集成ReviewBoard,讓post-commit hook後臺運行

代碼評審(Code Review)不但能夠提升質量,並且仍是一個知識共享和指導的極好的手段。 python

代碼評審(CodeReview)通常有兩種形式:pre-commit-review,post-commit-review。 linux

pre-commit-review是指代碼提交到代碼庫進行代碼評審; git

post-commit-review是指代碼提交到代碼庫進行代碼評審。 github


ReviewBoard是一個開源的基於web的代碼評審工具,支持Subversion,CVS,Git和Mercurial版本控制系統。 web

svn能夠經過post-commit hook與ReviewBoard集成,實現post-commit-review。 svn


其實現原理爲: 工具

用戶在提交代碼至svn完成後觸發post-commit鉤子腳本 post

在svn post-commit hook中調用RBtools的rbt post命令鏈接ReviewBoard自動提交代碼評審請求(ReviewRequest) google

注:RBtools是ReviewBoard官方提供的python命令行工具。它是用python API與ReviewBoard進行交互。 spa


在使用中出現了以下問題:

用戶須要等待post-commit hook執行完畢後纔算提交完成

這樣直接致使了用戶提交代碼等待時間過長,影響了用戶體驗

因而想到讓post-commit中調用的rbt post命令在後臺運行

這樣post-commit就無需等待rbt post執行完成能夠發送完rbt post命令後直接返回


得知在linux中&命令能夠把做業放到後臺執行

但是在post-commit hook中的rbt命令後加了&並不起做用

經過在google上搜索

終於在stackoverflow上找到了這篇文章,最終解決了問題

原來還須要用2>&1把全部的錯誤輸出轉換成標準輸出,使得錯誤輸出和標準輸出都被重定向到一個叫作out.file 的文件中

其中2表示錯誤輸出,1表示標準輸出

rbt post "$args" 2>&1 &


不得不說,google和stackoverflow 很強大啊@!



其餘:

svn post-commit腳本編寫能夠參考:reviewboard源碼中用戶貢獻的樣例

rbt post 命令官方指南

相關文章
相關標籤/搜索