2012-04-12 3 views
3

У меня есть сервер Windows, на котором работает Visual SVN Server для хранения наших репозиториев. Также на этом сервере находится наша тестовая копия.SVN Post Commit Hook Batch Windows

Я пытаюсь создать простой SVN после совершения крючка, поэтому он автоматически обновляет эту тестовую копию каждый раз, когда я что-то совершить

В Visual SVN в посте фиксации крючки, которые я указал, как это

"C:\Program Files (x86)\VisualSVN Server\bin\updatescripts.bat" D:\inetpub\TESTCOPY 

Затем этот пакетный файл имеет простое обновление, как этот

PATH=%PATH%;"C:\Program Files (x86)\VisualSVN Server\bin\" 
svn update %1 

Если я запустить пакетный файл на сервере, дважды щелкнув по нему или из командной строки ш орки прекрасные. При совершении чего-то с моего ноутбука он зависает и не дает мне никакой ошибки и блокирует тестовую копию, поэтому мне нужно войти и запустить очистку.

Служба визуального SVN работает как служба сети, и этот aacount имеет полный доступ к папке bin и тестовой копии на сервере.

Любая идея о том, как настроить простую запись обновления svn, зафиксировать кого-либо?

Благодаря Феде

+0

Я пытаюсь сделать то же самое, я безуспешно пытался сделать все в самом крючке, затем нашел этот подход. Я получаю странные результаты, в конечном счете, он не обновляется, когда я просто дважды щелкаю командный файл, который он работает. Когда я меняю имя командного файла на крючок после фиксации, он дает мне ошибку, говоря, что он не может найти файл. Таким образом, кажется, что крючок может найти файл, но не выполняет его? Я не знаю, но вот что у меня есть. В пост фиксации крюк: "C:/Мой путь/myrepository/file.bat" В пакетном файле: CD "C:/рабочий путь/myrepository" СВН обновление Любой увидеть какие-либо вопросы? – mgrenier

+0

При установке VisuaSVN Server добавляется переменная среды% VISUALSVN_SERVER%. Проверь это. – bahrep

ответ

1

У меня была аналогичная проблема, и она оказалась в том, что SVN любит пути использовать слэши вместо обратной косой черты.

Попробуйте это:

set MYPATH=%1 

:: Transform backslashes to forward slashes 
set MYPATH=%MYPATH:^\=/% 

svn update %MYPATH% 
+0

Извините, но все тот же, он замерзает и блокирует мою тестовую копию. –

0

Перепробовав миллион разных вещей, это работало для меня ...

Я положил это в моем пост-фиксации «C: \ Program Files \ VisualSVN сервера \ Bin \ svn.exe»обновление„C: \ моего пути \“ где мой путь путь к рабочей копии обновляться

Кроме того, я должен был изменить службу для работы в качестве локальной системы

+0

Локальная система? Зачем? Использовать сетевую службу по умолчанию и предоставить ей доступ к 'C: \ my path \' – bahrep

+0

У меня были проблемы с разрешениями, когда я использовал Network Service ... может зависеть от конфигурации конкретных установок, просто хотел бы упомянуть, если кто-либо испытал аналогичные разрешения вопросы. – mgrenier

1

Вы используете команду svn update. Какую рабочую копию вы пытаетесь обновить?

Параметр, передаваемый Путь хранилища. Это указывает не на рабочий каталог, а на каталог, содержащий главный репозиторий Subversion. Это тот же каталог, в котором хранится ваш крюк фиксации сообщения.

Подвижные крючки не имеют доступа к рабочему каталогу пользователя, поэтому вы не можете манипулировать файлами пользователя. Обычно скрипты-крючки должны использовать svnlook, а не svn. Делая это, вы не можете попасть в какие-либо проблемы.

Можно обновить рабочую копию Subversion на сервере, если вы знаете, местоположение:

PATH=%PATH%;"C:\Program Files (x86)\VisualSVN Server\bin\" 
set SVN_WORK_DIR=C:\SVN\workdir" 
svn update %SVN_WORK_DIR% 

Однако, я не рекомендовал бы это, потому что она связывает Subversion. Пользователь, совершивший фиксацию, должен будет дождаться завершения обновления до того, как Subversion вернет управление запросом обратно пользователю.

0

То есть действительно не так, как вы хотите это сделать. Что вы должны сделать, так это использовать что-то вроде Jenkins, чтобы посмотреть ваш репозиторий. Дженкинс может наблюдать за вашим репозиторием, и когда он меняется, обновляет вашу тестовую копию, начинает сборку, запускает автоматические тесты и т. Д.

Смежные вопросы