Git хостинг, который тянет от разработчиков, отказываясь от нарушенных коммитов? - PullRequest
7 голосов
/ 05 ноября 2010

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

Существует ли программное обеспечение, позволяющее размещать Git таким образом, что предотвращает нарушение сборок в управлении версиямине принимая коммиты, которые не проходят тесты в первую очередь?Например, сценарий использования может выглядеть следующим образом:

  • Программное обеспечение работает на сервере, который непрерывно извлекает версии из репозиториев Git, опубликованных разработчиками.
  • Для каждой извлеченной версии, программное обеспечениестроит ревизию и проверяет, проходит ли она юнит-тесты.
    • Если он проходит тесты, ревизия объединяется в "стабильную" ветвь.
    • Если она не проходит тесты, она отклоняется, и ревизия не объединяется в "конюшня "ветка.Разработчик вынужден исправить редакцию и повторно отправить ее.
  • Разработчики по умолчанию извлекают "стабильную" ветвь, которая никогда не должна нарушаться - в том смысле, что тесты не дают ошибок - иболее продуктивны, поскольку они проводят меньше времени, будучи заблокированными сломанными сборками.И полезность такой системы возрастает с увеличением размера команды.

Несколько замечаний:

  • Хиты pre-commit Git и аналогичные не подходят в этом случае.Решение должно быть автоматическим и принудительным на стороне сервера для каждого коммита.
  • Ищите решение, которое было реализовано и продуманно настолько, насколько это возможно, вместо того, чтобы писать такую ​​систему, как эта, с нуля.

Ответы [ 3 ]

1 голос
/ 05 ноября 2010

Мы используем Геррит и Хадсон. Это то, что используют Android и CyanogenMod (наряду со многими другими). ​​

Gerrit позволяет просматривать код и автоматически создавать каждый коммит с автоматическим отклонением тех, которые не прошли тестирование.

Хадсон запускает тесты.

Hudson: http://wiki.hudson -ci.org / display / HUDSON / Проектирование + предварительное тестирование + коммит

Геррит: http://gerrit.googlecode.com

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

Примечание: чтобы начать работу, достаточно много работы, если у вас большая база кода, но она того стоит.

1 голос
/ 05 ноября 2010

Я думаю, что это больше функция сервера сборки, которая связана с VCS, такой как Git. TeamCity поддерживает это, но я не пробовал, поэтому не могу комментировать, насколько он хорош на самом деле.

http://www.jetbrains.com/teamcity/features/delayed_commit.html

Ребята из Хадсона обсуждали это некоторое время, но я еще не видел это в релизе.

http://wiki.hudson -ci.org / дисплей / HUDSON / Проектирование + предварительное тестирование + фиксации

0 голосов
/ 03 июля 2012

Это действительно хорошая идея.Бамбук поддерживает это вполне естественно.Несколько клиентов Bamboo, а также команды Atlassian имеют эту точную методологию и работают с большим эффектом.В Bamboo есть прослушиватели событий, которые могут (без опроса) сообщать, когда коммит помещается в репозиторий 'test verfication', а затем проверять его, выполняя тесты перед отправкой в ​​стабильную ветку.www.atlassian.com/bamboo

...