我有一種感覺,sudo
失敗。
真的不重要,因爲你想要做的是不好主意。該存儲庫導出有多大?這需要多長時間。 20秒? 2分鐘?
想象一下,您是Subversion用戶,並且您嘗試檢入更改。你做了一個提交,然後突然你的終端似乎凍結。也許是20秒,也許是兩分鐘。無論需要完成後提交掛鉤。男孩,你覺得自己,Subversion太慢了......
更好的方法是用crontab。而且,如果您有能力以root身份執行操作,您當然可以執行crontab。
跟蹤最新的Subversion版本。然後,如果您檢測到更改,則執行導出。簡單的腳本,易於實現,並且不會在等待導出時凍結Subversion。
順便說一下,哪個用戶正在運行Subversion服務器進程。這是執行掛鉤的用戶。如果您的/etc/sudoers
文件集中沒有該用戶不需要密碼,則您的提交後掛接將失敗。同樣,Subversion的鉤子都沒有路,所以他們無法找到sudo
命令,你必須與任何目錄它在前綴它。
不過,即使你得到它的工作,它仍然是一個壞主意。
下面是一個嘗試創建一個crontab,將做你想做的。完全未經測試。我今晚根本沒有時間。但是,它會給你的想法:
#! /bin/bash
REPO_URL="http://...."
DIR=... #Where you want the export
LAST_REV_FILE=/var/run/svn.last.rev
SVN=/usr/bin/svn
SED=/usr/bin/sed
current_rev=$($SVN info $REPO_URL | $SED -n '/^Revision: /s/^Revision: //p')
if [ ! -f $LAST_REV_FILE ]
then
echo $current_rev > $LAST_REV_FILE
exit 0
fi
#You're here if there is a last.rev.file
last_rev=$(echo $LAST_REV_FILE)
[ $last_rev -ge $current_rev ] && exit 0
# New Revision
echo $current_rev > $LAST_REV_FILE
rm -rf $DIR
$SVN export $REPO_URL $DIR
由於某種原因後提交不會觸發提交。你有什麼想法是什麼問題? – fiatux
如果這是Unix,則提交後腳本必須具有執行權限,並且可以由運行Subversion服務器的用戶執行。如果您在Windows上,則必須將該文件命名爲post-commit.bat,並且必須設置PATHEXT。作爲一個測試,把'echo「POST COMMIT HOOK失敗!」 2>&1'打印出一些東西,如果post-commit鉤子運行但失敗。 –
它是一個unix服務器,我試着在提交後嘗試chmod 777。仍然沒有被觸發。 – fiatux