Как установить svn post-commit hook

Я использую SVN в Linux. Я надеялся запустить автоматическое развертывание после фиксации. Судя по моим поискам, похоже, что svn post-commit может помочь. Но я не смог найти SVN post-commit из моей установки SVN. Интересно, это отдельная установка? Есть ли какой-нибудь хук после фиксации SVN, который я могу загрузить и установить?

2 ответа

Решение

Это не отдельная установка. В вашем каталоге репозитория есть каталог 'hooks'. Вы можете найти post-commit.tmpl, просто измените файл и переименуйте его в исполняемый файл в соответствии с вашим типом ОС.

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

Чтобы ответить на ваш вопрос, взгляните на каталог репозитория на вашем сервере, вы должны увидеть следующие каталоги и файлы:

  • README.txt
  • конф
  • децибел
  • формат
  • крючки
  • замки

Один из каталогов называется hooks, Посмотрите в этом каталоге:

  • после commit.tmpl
  • после lock.tmpl
  • после revprop-change.tmpl
  • после unlock.tmpl
  • предварительно commit.tmpl
  • предварительно lock.tmpl
  • предварительно revprop-change.tmpl
  • предварительно unlock.tmpl
  • пуско-commit.tmpl

Это шаблоны для различных хуков. Вы увидите, что это все простые сценарии оболочки BASH/Korn/Bourne. Вы будете использовать svnlook команда, чтобы получить информацию о ревизии или транзакции (если хук перед фиксацией), которую ваш пользователь только что совершил.

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

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

Тем не менее, он также может просто выполнить проверку и развертывание, если вам действительно нечего строить. Дженкинс использует Java 1.6 для запуска, но в остальном его довольно просто установить и использовать. Это все меню, и вам не нужно знать, как создавать XML-файлы или писать какие-либо программы для его использования.

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

Другие вопросы по тегам