Я играю над идеей добавить возможность «удаленного запуска (персональная сборка) для Mercurial» в плагине TeamCity Visual Stuio.
Начиная с v6.5, TeamCity поддерживает «триггер ветки удаленного запуска», при котором при нажатии на именованную ветку, соответствующую триггеру в TeamCity, TeamCity будет запускать личную сборку этой ветки.
Идея состоит в том, чтобы взять текущие исходящие наборы изменений из текущей ветви (скажем, default
) и переместить их во временную именованную ветвь с именем remote-run
. Затем он передается в CI, поэтому личная сборка запускается, и если личная сборка успешна, изменения перемещаются обратно в исходную ветвь, а ветвь remote-run
удаляется.
У меня есть несколько вопросов по этому поводу:
- Имеет ли это смысл?
- Какое расширение мне использовать для этого? Я считаю, что MqExtension делает все, что мне нужно, но есть ли альтернативы?
- Что произойдет, если пользователь внесет дополнительные изменения во время удаленного запуска? Как наборы изменений «временной ветви» слились бы с исходной веткой?
Сценарий, на который я сейчас нацеливаюсь, следующий: работая над веткой по умолчанию, пользователь добавляет 3 новые ревизии. Затем он хочет запустить эти изменения как личную сборку в TeamCity, но забыл зафиксировать эти изменения в специально названной ветви. Вместо этого мой плагин примет эти исходящие изменения и поместит их в именованную ветку. Как только личная сборка завершается успешно, эти изменения помещаются обратно в исходную (по умолчанию) ветвь и передаются в удаленный репозиторий.
Примерно так:
[default] A---B---C---D
Предполагая, что B
, C
и D
- новые ревизии, я хочу, чтобы инструмент сделал:
[default] A
\
[remote-run] B---C---D
И после того, как это будет сделано, верните его в исходное состояние, т.е.
[default] A---B---C---D
EDIT : мне удалось перенести изменения в другую ветку с помощью Mq, в итоге все оказалось очень просто. К сожалению, я не знаю, как отменить это изменение:)
Надеюсь, это имеет смысл!