ReviewBoard實現自動post-commit linux
在svn hooks中使用RBTools工具的rbt post命令向Reviewboard自動提交review request(評審請求) shell
在實踐中遇到的主要問題爲:rbt命令在linux終端能夠執行但在svn hooks中執行出錯 apache
通過不判定位、嘗試,終於解決了該問題,記錄並分享... 緩存
歡迎交流 bash
rbt命令用-d開啓debug,報錯信息以下: svn
rbt ERROR: svn Command exited with rc 1: ['svn', 'info', 'http://xxx', '--non-interactive'] 工具
rbt ERROR: svn: OPTIONS of 'http://xxx' authorization failed post
rbt ERROR: No supported repository could be accessed at the supplied url. url
由上可知,執行svn hooks的用戶無權限訪問svn spa
--non-interactive表示非交互式處理,即便svn命令執行出錯也不彈出認證輸入框
可知執行svn hooks的用戶沒有緩存svn認證信息
解決步驟:
一、獲取執行pos-commit的用戶
在post-commit文件中,echo `who am i`>/tmp/svn-post-commit.log
將執行pos-commit的用戶重定向到svn-post-commit.log文件中
得到執行pos-commit的用戶爲:apache
二、su切換到apache並將home目錄的owner改成apache
su apache出現:This account is currently not available
解決之道:
用vi看看 apache的賬號信息
cat /etc/passwd | grep apache
發現它的shell是「/sbin /nologin」,須要將起改爲「/bin/bash」
修改完畢後,保存退出
這樣再 su apache就能夠了
獲取apache的home:
能夠cat /etc/passwd | grep apache 查看
也能夠su apache後cd 或cd ~,在home目錄執行pwd查看
得出apache的home爲/var/www
將home目錄的owner改成apache:chown -R apache /var/www
三、用apache緩存svn認證信息
切換到apache賬號並切換目錄爲apache的home目錄/var/www
首先,須要手動清空.subversion/auth/svn.simple目錄下的緩存文件
其次,修改.subversion/servers文件,更改成:store-plaintext-passwords = yes
而後,在某個目錄下執行 svn co http://xxx ,會有嚮導讓輸入認證信息
這樣就將認證信息保存在.subversion/auth/svn.simple目錄下
最後,rbt命令在post-commit這個svn hooks執行成功。