我遇到了类似的问题,但是 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 velsvnuser@localhost /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 以便它们可以被执行。
请随时评论这篇文章并提供更好看的解决方案。我现在所知道的是,这个解决方案有效:)