我有一個類似的問題,但與Linux服務器託管SVN。也許你可以從這裏得到一些線索,並將其更改爲與Windows系統相匹配。
POST_COMMIT
#!/bin/sh
wget http://localhost/update_svn.php
update_svn.php
<?php
$output = shell_exec('/media/disk3/velsvn/projects/hooks/svn_update_step1.sh');
echo "<pre>$output</pre>";
?>
svn_update_step1.sh
ssh -i /media/d/mykey/id_rsa [email protected] /media/disk3/velsvn/projects/hooks/svn_update_step2.sh
svn_update_step2.sh
#!/bin/sh
cd /media/disk3/velsvn/projects/hooks
rm -f filelist
rm -f log
whoami >> log
svnlook dirs-changed /media/disk3/velsvn/projects/ | sed "s/^..//" | awk '{ print substr($0, 9) }' >> /media/disk3/velsvn/projects/hooks/filelist; sed -i -e 's#^#/media/disk2/www/htdocs#' filelist; cat /media/disk3/velsvn/projects/hooks/filelist | xargs /usr/bin/svn up -N >> /media/disk3/velsvn/projects/hooks/log
注意: 1./media/d/mykey/id_rsa是爲SSH訪問生成的密鑰。這確保系統不會等待用戶提供密碼以連接到SVN以及執行shell腳本。 2. POST-COMMIT文件和shell文件sh1和sh2被賦予+ x mod,以便它們可以被執行。
請隨時評論這篇文章,並提供一個更好看的解決方案。我現在所知道的是,這個解決方案有效:)