Хорошо, вот сценарий: команда разработчиков хочет, чтобы весь новый код соответствовал определенным стандартам кодирования, и все модульные тесты проходят до принятия фиксации. Здесь трюк, все тесты должны выполняться на специализированной тестовой машине, и у нас нет доступа к модификации сервера git, поэтому это нужно сделать, используя локальный фиксатор фиксации на каждой машине dev.
Хотя спецификации довольно строгие (например, мы не переключаемся на окна или подрывную деятельность), это проблема реального мира, поэтому существует определенная гибкость, если у вас есть решение, которое почти подходит.
- Мы используем git и * nix.
- Обновленный код должен быть отправлен на другой сервер для запуска набора тестов.
- Необходимо указать список измененных файлов, чтобы убедиться, что они соответствуют стандарту кодирования.
- Его довольно большая база кода, поэтому мы должны отправить наименьший объем информации, необходимой для обеспечения идентичных копий кодовой базы.
- Если тесты не выдаются, сообщение должно отображаться с ошибкой, и фиксация должна быть заблокирована.
- Предположим, мы доверяем нашей команде разработчиков, и все в порядке, чтобы тесты можно было обойти с помощью опции
--no-verify
.
Вопрос: Каков наилучший способ заставить тестовый сервер синхронизироваться с локальной средой для запуска тестов? Какой-то хэш-хэш, соответствующий патчу git для нового коммита? Пропустить git в целом и просто сделать rsync? Что-то еще вообще?
Обновление 8/7/13: Я выстрелил себе в ногу, даже упомянув дистанционное репо. Дело в том, что нельзя блокировать код, который будет перенаправлен на общий/удаленный репо, для предотвращения локального коммита. Независимо от того, считается ли это лучшей практикой, дело не в этом, так как это характерно для небольшой группы разработчиков, которым всем нужна эта точная функциональность. Вопрос в том, как лучше всего достичь цели.