Ответ 1
Самое простое решение - не удалять и не переписывать.
Филиал службы обновления является "ветвью службы обновления" только в имени. Удалите ветвь "release" и переименуйте ветвь "пакет обновления" в "release".
У меня есть командный проект, созданный с помощью шаблона ветки "Стандартный" из руководства по ветвлению ALM Rangers:
После создания я обнаружил, что мне действительно нужен шаблон Basic. То есть мне не нужна ветка "Service Pack".
Есть ли способ удалить ветку "Service Pack" и "исцелить" иерархию, чтобы "Release" находилась под "Main" в иерархии? В настоящее время каждый набор изменений в иерархии "Service Pack" имеет соответствующий набор изменений в иерархии "Release", поскольку "Service Pack" только что мешал.
Самое простое решение - не удалять и не переписывать.
Филиал службы обновления является "ветвью службы обновления" только в имени. Удалите ветвь "release" и переименуйте ветвь "пакет обновления" в "release".
Филиалы в TFS, к сожалению, являются старомодными (или "похожими на динозавры", если вы спросите Torvalds;) в том, что когда-то созданный, структура установлена и не может быть изменена. Я считаю, что вам нужно будет создать новую ветку Release непосредственно под Основной, а затем выполнить безликое слияние от старой ветки Release до новой. Я думаю, вы должны использовать параметр /noprompt
для команды слияния, чтобы остановить диалог "Разрешить конфликты".
Это даст вам больше конфликтов, чем это действительно необходимо, поскольку TFS не будет знать, какой предок использовать. Но так как вы захотите взять все из исходной ветки Release, вы можете использовать команду tf resolve /recursive /auto:TakeTheirs
, чтобы сообщить TFS всегда принимать изменения в ветки источника.
После этого вы сможете удалить старое дерево ветвей.
Сложно, но не невозможно.
Ну, я не знаю о старой версии TFS
, но по крайней мере в TFS2012
/VS2013
вы можете сделать:
Source Control Explorer
> Branching and Merging
> Reparent
, выберите Основной (новый родитель)Готово!
Следующее работало для меня в аналогичном сценарии
tf merge /baseless /recursive /noprompt /discard $/TFS/Path/To/Release $/TFS/Path/To/Main
то
теперь вы можете выполнять обычный слияние GUI с "Release" на "Main"
ПРИМЕЧАНИЕ. Как уже упоминалось многие люди, будьте осторожны с необоснованными слияниями, которые они могут укусить вас в драгоценностях позже на линии, когда злоупотребляют.