Рабочий процесс Subversion: принудительное обновление, сборка, тестирование перед фиксацией - PullRequest
4 голосов
/ 26 июня 2011

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

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

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

1 Ответ

1 голос
/ 26 июня 2011

SVN сам гарантирует, что файл (ы) был обновлен.Вы не должны гарантировать, что люди проверяют файл обновления.

Для части компиляции / тестирования вы можете использовать клиентские перехватчики, используя TortoiseSVN, который скомпилирует код и выполнит тесты как часть предварительногоКрюк.Будьте осторожны, вы не можете быть уверены, что у каждого разработчика есть настройка хуков.

Вы также можете посмотреть на что-то похожее на Задачи Rake Commit *

Ниже приведены шаги, которыевышеописанное делает:

  1. Запрашивает сообщение о коммите
  2. Добавляет новые файлы в Subversion
  3. Удаляет отсутствующие файлы из Subversion
  4. svnupdate
  5. Запускает стандартную задачу rake (которая должна запускать тесты)
  6. Проверяет cruisecontrol.rb, чтобы проверить, проходит ли сборка
  7. Проверяет код
...