昨天配置了一下午svn hooks
本了很簡單的一件事情,卻因爲 一個https弄的異常難搞。
在hooks的目錄下,編輯 post_commit之後,始終無法updae,原因是,需要ssl驗證主機。
在網上查看了下,用了svn ls https://****之後,彈出需要確認,輸入p,輸入密碼之後還是不行。
於是,我懷疑是用戶的是。svn+apache 做的https協議。應該是用apache用戶跑的吧。
可是apache用戶我設置的是沒有登陸權限的。怎麼辦?
只好usermod 修改,成爲可登錄用戶。從/etc下面某個目錄生成原始的bash環境配置文件。
用apache用戶進行驗證,保存驗證信息,保存密碼。還是不行。還是報錯。
在老外的網站上發現了兩個參數。
--non-interactive --trust-server-cert
然後呢。需要輸入p的那個報錯沒了,剩下最後一行,錯誤信息:post-commit Host key verification failed. 驗證失敗。哈哈哈,還是失敗。無語了。
最後決定放棄了,不用hooks的腳本跑了。
後來無意間發現有人這麼做:
/usr/bin/ssh -lT [email protected] "/usr/bin/svn up /home/****"
/usr/bin/ssh -lT [email protected] "chown apache:apache /home/**** -R"
我再試試吧,不在本機弄了,直接同步到別的機器上。
做了ssh-key免登錄之後,抱了個UTF-8的錯誤。
有人說在apache的配置文件加上:
SVNUseUTF8 on
不知道我寫的不對還是就是不行,失敗了。
svn客戶端post-commit時,出現如下錯誤
post-commit hook failed (exit code 1) with output.
[Error output could not be translated from the native locale to UTF-8.]
解決方法:
其實上述錯誤是一個錯誤,執行post-commit腳本時文字編碼造成的
在版本庫hooks/post-commit文件中
原來是#export LANG=zh_CN.GBK
修改爲export LANG=en_US.UTF-8即可(svn服務器默認是utf8)
後來照着上面的改,成功了。
暫時寫到這。怎麼讓hooks識別commit -m "****" 裏面的***?然後根據***進行同步命令多好啊?
繼續努力。