代碼評審(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 命令官方指南