Win apache svn зависает после фиксации обновления

Я использую модуль svn apache для управления своими репозиториями на веб-сервере и tartoise svn для взаимодействия с ним.

Я хотел автоматизировать обновление рабочей копии на сервере всякий раз, когда я что-то фиксирую, чтобы мне не приходилось вручную настраивать удаленный рабочий стол на сервере и запускать обновление вручную.

Для этого я создал простой хук после фиксации репо.

echo %username% >> C:\debug.txt
svn update F:\wampserver64\www\netcity\maintenance\ >> C:\debug.txt

Проблема в том, что я больше не могу вносить какие-либо изменения в репо. Фиксация просто зависает после достижения 100%, а кнопка ОК неактивна. После этого зафиксированные файлы находятся в заблокированном состоянии как на клиенте, так и на сервере, и я должен очистить и обновить вручную на обеих станциях. Echo% username% используется для отладки. Я подозреваю, что это может быть проблема с разрешением, поэтому я решил, что имя пользователя svn запускается как. Это результат:

XIBM$ 
Updating 'F:\wampserver64\www\netcity\maintenance':

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

liviu.gelea 
Updating 'F:\wampserver64\www\netcity\maintenance':
At revision 19.

Я пробовал установить полные разрешения для XIBM / пользователей, авторизованных пользователей, администратора, гостей и практически всего, что перемещается на сервере, но безуспешно. поэтому любая помощь очень ценится.


person Liviu Gelea    schedule 14.03.2013    source источник
comment
Какое содержимое debug.txt?   -  person thekbb    schedule 17.03.2013
comment
Последние 2 серых поля обозначают запуск debug.txt как обработчик и вручную.   -  person Liviu Gelea    schedule 18.03.2013


Ответы (2)


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

Вместо этого используйте механизм непрерывной интеграции, такой как Jenkins, чтобы справиться с этим. Jenkins прост в настройке и избавит от проблем со сценарием после фиксации.

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

person David W.    schedule 18.03.2013
comment
Спасибо за предложение, но на самом деле мы всего 2 пользователя, и коммиты очень редки. Тем не менее, поскольку сервер - это Windows, и у нас нет доступа по ssh, только удаленный рабочий стол, действительно сложно входить в систему через удаленный рабочий стол только для того, чтобы выполнить обновление. - person Liviu Gelea; 26.03.2013

С какой учетной записью работает svn? Я бы порекомендовал несколько вещей

  1. укажите --username в обновлении, вы, вероятно, не захотите добавлять локальную учетную запись службы, в которой работает svn, чтобы иметь доступ к репо
  2. добавьте --accept theirs-full, чтобы всегда брать копию сервера в случае конфликта
  3. как только вы наберете номер, вы, вероятно, тоже захотите --quiet
person thekbb    schedule 18.03.2013
comment
извините за задержку с ответом. журнал должен содержать полное имя пользователя, но вместо этого содержать только имя сервера и $: XIBM $. Я попробую ваш совет как можно скорее. (завтра :)) - person Liviu Gelea; 26.03.2013