Хорошо, вот сценарий: команда разработчиков хочет, чтобы все новые коды соответствовали определенным стандартам кодирования, и все модульные тесты проходят до принятия фиксации. Вот трюк, все тесты должны выполняться на специальной тестовой машине, и у нас нет доступа к модификации сервера git, поэтому это нужно сделать, используя локальный фиксатор на каждой машине dev.Принято применение стандартов кода в git до фиксации
Хотя спецификации довольно строгие (например, мы не переключаемся на окна или подрывную деятельность), это проблема реального мира, поэтому существует определенная гибкость, если у вас есть решение, которое почти подходит.
- Мы используем Git и * nix.
- Обновленный код должен быть отправлен на другой сервер для запуска набора тестов.
- Необходимо предоставить список модифицированных файлов, чтобы убедиться, что они соответствуют стандарту кодирования.
- Его довольно большая база кода, поэтому мы должны отправить наименьший объем информации, необходимой для обеспечения идентичных копий кодовой базы.
- Если тесты не выдаются, сообщение должно быть отображено с ошибкой, и фиксация должна быть заблокирована.
- Предположим, мы доверяем нашей команде разработчиков, и все в порядке, чтобы тесты можно было обойти с помощью опции
--no-verify
.
Вопрос: Что является лучшим способом, чтобы получить тестовый сервер для синхронизации с местной средой для запуска тестов? Какой-то хэш-хэш-код, соответствующий патчу git для нового коммита? Пропустить Git вообще и просто сделать rsync? Что-то еще?
Обновление 8/7/13: Я выстрелил себе в ногу, даже упомянув дистанционное репо. Дело в том, что нельзя блокировать код, который будет перенаправлен на общий/удаленный репо, для предотвращения локального коммита. Независимо от того, считается ли это лучшей практикой, дело не в этом, так как это характерно для небольшой группы разработчиков, которым всем нужна эта точная функциональность. Речь идет о лучшем способе достижения цели.
Разве это не в основном то, что требуют тянуть? (Конечно, вы не можете использовать GitHub для этого проекта, но вы почти наверняка можете сделать что-то подобное.) – Ajedi32
Запросы Pull для просмотра кода, да, но идея здесь заключается в том, что код не должен даже быть привязан к репо, если он не проходит первый, автоматический обзор. –
Многие проекты Github также используют сервер непрерывной интеграции, такой как Travis, для запуска тестов кода в запросах на pull и отчета о результатах - так что это не только для обзоров кода. Кроме того, код в запросах на вытягивание не является технически в репо до тех пор, пока запрос на растяжение не будет объединен. Вот почему он называется запросом ['pull'] (https://www.kernel.org/pub/software/scm/git/docs/git-pull.html). – Ajedi32