Ошибка Subversion после фиксации фиксации?

Я пытаюсь сделать так, чтобы Subversion автоматически развертывала текущую рабочую копию при фиксации.

например, если кто-то проверяет репо 'public_html', а затем фиксирует изменение, мне нужно, чтобы SVN автоматически запускал 'svn update / path / to / public_html /' на сервере, на котором запущен svn.

Я установил хук после фиксации, который вызывает:

/ usr / bin / svn update / путь / к / public_html /

Я убедился, что хук после фиксации является исполняемым, и если я вручную запускаю скрипт через SSH, он работает правильно и обновляет / path / to / public_html / dir, поэтому мы знаем, что скрипт после фиксации работает нормально.

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

Transmitting file data .svn: Commit failed (details follow):
svn: MERGE of '/svn/public_html': 200 OK (http://ourdomain.com)

Дело в том, что SVN лжет сквозь зубы: фиксация на самом деле НЕ завершается неудачей - если я вручную обновляю каталог (или вручную запускаю скрипт после фиксации), обновление завершается, и изменения отражаются на сервере.

Итак, кто-нибудь знает, почему мой хук после фиксации не работает?

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

Любая помощь будет принята с благодарностью!


person 1337ingDisorder    schedule 04.08.2010    source источник
comment
Это не дает прямого ответа на ваш вопрос, поэтому я включаю его в комментарий, а не в ответ - я бы не рекомендовал запускать содержимое вашего общедоступного HTTP-сервера напрямую в репозиторий svn. Вместо этого вы должны использовать сценарий сборки и развертывания, который упаковывает ваш код и контент и перемещает их в место публикации. Автоматическая привязка к коммитам звучит особенно пугающе - что, если кто-то отметит ошибку кода или грубую опечатку в описании? У вас никогда не будет возможности протестировать изменения до того, как они вступят в силу.   -  person Ether    schedule 05.08.2010


Ответы (2)


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

person khmarbaise    schedule 04.08.2010
comment
+1, коды выхода и вывод пост-коммитов должны игнорироваться svn. - person Wrikken; 05.08.2010
comment
Спасибо, и да, фиксация успешна, хотя SVN сообщает, что она не работает, это просто ошибка после фиксации. Я знаю, что окружающей среды нет. Содержимое сценария: --- #! / Bin / sh / usr / bin / svn update /web/ourdomain.com/dev/public_html --- - person 1337ingDisorder; 06.08.2010

Проверьте, имеет ли идентификатор пользователя процесса svn server достаточно прав на / path / to / public_html / для записи файлов и каталогов.

Другая идея: ему также нужен доступ к собственному репозиторию, как указано в рабочей копии «/ path / to / public_html /». Если вы используете протокол svn + ssh или http, вы можете изменить его на файловый протокол - в любом случае он находится на том же сервере.

person Turbo J    schedule 04.08.2010
comment
С разрешениями все в порядке. Я не знал, что вы можете обновить извлеченную копию репо с помощью file: // Итак, если путь /web/ourdomain.com/dev/public_html/, я мог бы просто использовать file: ///web/ourdomain.com / dev / public_html / вместо необработанного пути, и SVN будет относиться к нему по-другому? - person 1337ingDisorder; 06.08.2010
comment
используйте 'svn switch' или 'svn switch --relocate' - person Turbo J; 18.08.2010
comment
Не то, чтобы я не использовал рабочую копию в качестве общедоступного корня html, но экспорт (через экспорт svn), поскольку это удалит эти записи каталога .svn /. - person Turbo J; 18.08.2010