Обычный способ - просто зафиксировать. При использовании DVCS настоятельно рекомендуется «делать коммиты рано, делать часто». Часто выполняйте локальные коммиты, а затем в целях резервного копирования часто нажимайте на tmp repo на сервере. Когда вы довольны своей работой, вы переходите с репозитория tmp на общий «центральный» сервер.
Нет необходимости следить за тем, чтобы все компилировалось после каждого набора изменений, норма состоит в том, чтобы просто убедиться, что каждая задняя часть набора изменений, которую вы нажимаете, оставляет «подсказку» в состоянии компиляции. Обычно сервер триггеров непрерывной интеграции запускает сборку после прибытия каждой группы наборов изменений (changegroup) и учитывает только «подсказку».
Если вы действительно, действительно не можете терпеть наличие наборов изменений, которые не могут существовать самостоятельно, то Mercurial Pro будет использовать Mercurial Queues , чтобы держать версионный патч в отдельном хранилище очереди во время работы в теме. Кто-то, кто хочет играть с огнем, использовал бы расширение коллапса, чтобы объединить последовательность наборов изменений в один набор изменений перед отправкой в общие репозитории.
Из трех представленных вариантов:
- исправьте ваш рабочий процесс, чтобы центральное хранилище могло обрабатывать наборы изменений, которые не компилируются, если они являются частью группы изменений, которая компилирует
- использовать ртутные очереди для хранения патча в хранилище исправленных версий
- использовать расширение коллапса, чтобы переписать историю (игра с огнем)
Я думаю, что первое делается чаще всего, и, как правило, это "правильный" способ.