Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
|
Сообщ.
#1
,
|
|
|
На компьютере под Windows 7 x64 запущен VisualSVN.
На этом же компьютере развёрнут AppServ. В одном из репозиториев SVN стоит хук post-commit.bat следующего содержания @echo off echo %time% start updating >> C:\SVNServer\Repositories\TestRepo\hooks\post-commit-log.txt call C:\AppServ\UpdateDocs.bat echo %time% success updating >> C:\SVNServer\Repositories\TestRepo\hooks\post-commit-log.txt exit 0 А вот содержимое запускаемого C:\AppServ\UpdateDocs.bat @echo off :: пишем логи echo %time% start updating >> C:\AppServ\log.txt :: разблокируем копию после предыдущих ошибок (если были) echo %time% clean up >> C:\AppServ\log.txt "C:\Program Files (x86)\VisualSVN Server\bin\svn.exe" cleanup C:\AppServ\TrunkCopy >> C:\AppServ\log.txt 2>> C:\AppServ\errlog.txt :: обновляем копию до последней версии trunk echo %time% update work copy >> C:\AppServ\log.txt "C:\Program Files (x86)\VisualSVN Server\bin\svn.exe" update C:\AppServ\TrunkCopy >> C:\AppServ\log.txt 2>> C:\AppServ\errlog.txt :: обновляем документацию echo %time% update docs >> C:\AppServ\log.txt "C:\Program Files\NaturalDocs\NaturalDocs.pl" -i C:\\AppServ\\TrunkCopy -o HTML C:\\AppServ\\www\\Docs -p C:\\AppServ\\DocsProject -l ru -s USSmall >> C:\AppServ\log.txt 2>> C:\AppServ\errlog.txt :: записываем, что успешно echo %time% success >> C:\AppServ\log.txt exit 0 При запуске первого батника вручную, рабочая копия нормально обновляется до HEAD и создаётся документация через NaturalDocs. А вот при коммите происходит следующее: управление передаётся второму батнику, он нормально делает cleanup и повисает на выполнении update. В логах остаётся следующее: post-commit-log.txt 12:05:41,33 start updating C:\AppServ\log.txt 12:05:41,33 start updating 12:05:41,33 clean up 12:05:44,08 update work copy Updating 'C:\AppServ\TrunkCopy': При этом у того кто совершает коммит, повисает окошко TortoiseSVN с заполненным на 100% прогрессбаром. В процессах видно следующее: Прикреплённая картинка
При чём, даже когда у пользователя выйдет таймаут или он отменит коммит, процесс останется висеть. На сколько я понимаю, svn при апдейте пытается записать какую-то информацию в каталог, к которому нет доступа у NETWORK_SERVICE (из под этой учётки запущен VisualSVN). Я разрешил запись в каталог C:\AppServ и каталог с хуками, но этого похоже не достаточно. Мне кажется, что svn куда-то скидывает свои временные файлы при апдейтах или пишет куда-то логи и надо дать прав на эти каталоги. Что посоветуете делать? |
Сообщ.
#2
,
|
|
|
Ну что же. Всё оказалось как всегда просто.
Надо было заставить входить службу VisualSVN Server "с системной учётной записью". Правда у меня первое время служба так запускаться не хотела. |