Я мог бы решить проблему, изменив мою процедуру.Перечислите это здесь, поскольку это может помочь кому-то еще.Может быть, это не идеальное решение, но, по крайней мере, оно работает.
POST_COMMIT
#!/bin/sh
wget http://localhost/update_svn.php
update_svn.php
<code><?php
$output = shell_exec('/media/disk3/velsvn/projects/hooks/svn_update_step1.sh');
echo "<pre>$output
";?>
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, а также для запуска оболочкискрипты. 2. Файл POST-COMMIT и файлы оболочки sh1 и sh2 получили + x mod, чтобы их можно было выполнять.
Пожалуйста, не стесняйтесь комментировать этот пост и предлагать более привлекательное решение.знаю прямо сейчас, это решение работает :) 1029 *