На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Запуск SVN hook на Windows , проблема с правами
    На компьютере под Windows 7 x64 запущен VisualSVN.
    На этом же компьютере развёрнут AppServ.

    В одном из репозиториев SVN стоит хук post-commit.bat следующего содержания
    ExpandedWrap disabled
      @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:\SVNServer\Repositories\TestRepo\hooks\ -каталог, из которого запускается хук.

    А вот содержимое запускаемого C:\AppServ\UpdateDocs.bat
    ExpandedWrap disabled
      @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
    В каталоге C:\AppServ\TrunkCopy храниться рабочая копия нужного репозитория.

    При запуске первого батника вручную, рабочая копия нормально обновляется до HEAD и создаётся документация через NaturalDocs.
    А вот при коммите происходит следующее: управление передаётся второму батнику, он нормально делает cleanup и повисает на выполнении update.

    В логах остаётся следующее:
    post-commit-log.txt
    ExpandedWrap disabled
      12:05:41,33 start updating

    C:\AppServ\log.txt
    ExpandedWrap disabled
      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 куда-то скидывает свои временные файлы при апдейтах или пишет куда-то логи и надо дать прав на эти каталоги.

    Что посоветуете делать?
      Ну что же. Всё оказалось как всегда просто.
      Надо было заставить входить службу VisualSVN Server "с системной учётной записью".
      Правда у меня первое время служба так запускаться не хотела.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0215 ]   [ 16 queries used ]   [ Generated: 10.12.24, 06:04 GMT ]