Я хотел бы знать, как функционал «отложенной фиксации» работает на CI-серверах, которые не интегрированы с репозиториями контроля версий. Концептуально процесс работает следующим образом:
- Проверка изменений кода
- CI сервер создает изменения
- Если сборка прошла, код передается в репозиторий управления исходным кодом
- Если сборка не удалась, код не передается в репозиторий управления исходным кодом
Большинство серверов CI работают, опрашивая репозитории системы контроля версий на предмет изменений и затем вытаскивая код. Таким образом, в сценарии отложенного принятия разработчики проверяют свой код на сервере CI, а не в реальных хранилищах управления исходным кодом, и затем сервер CI передает код в хранилище? Или же серверы CI просто откатывают изменения, если сборка не удалась?
Я имею в виду две системы непрерывной интеграции, в частности. Team Foundation Server собирается предложить эту функциональность в следующей версии, но это имеет смысл, поскольку Team Build (система CI) в TFS интегрирована с репозиторием контроля версий. Однако в случае Team City TC может подключаться к любой системе контроля версий и не обязательно интегрируется с тем же сервером или даже на том же сервере, что и репозиторий контроля версий. Как это работает?
Редактировать: Открытие щедрости на этот вопрос в надежде, что я смогу получить еще несколько возможных ответов.