Я обдумываю идею добавления возможности «удаленного запуска (персональная сборка) для Mercurial» в плагине TeamCity Visual Stuio.
Начиная с версии 6.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, это оказалось очень просто. К сожалению, я понятия не имею, как отменить это изменение :)
Надеюсь, это имеет смысл!