У нас долгая история наборов изменений вишни между филиалами с TFVC.Я усердно работаю над изменением этой практики, но есть один сценарий, для которого мне трудно придумать чистое решение.
В идеале, исправление, необходимое для производства, должно начать свою жизнь в отрасли, которую мыиспользовать для этой цели.Разработчик проверит изменения, которые должны быть включены в исправление в эту ветку, и его следует развернуть напрямую, без необходимости сначала объединять его с какой-либо другой ветвью.
Во многих случаях, однако, это не так.Когда работа начинается, ясно, что изменение будет включено в исправление, и разработчики отметят его в какой-то другой ветке.
Раньше мы выбирали этот набор изменений (объединяли подмножество наборов изменений, которые являются кандидатами наслияние) через ветку, из которой мы можем развернуть в производство.
Мне интересно, какие у меня есть альтернативы.
- Вручную отменить изменения в целевой ветви?Идеально использовать копирование и вставку, чтобы уменьшить вероятность конфликтов слияния, которые не могут быть автоматически разрешены.
- Слияние (выбор вишни), но каким-то образом уберите флаг
[merge]
, чтобы кредит на слияние не применялсяна ревизию.Я предполагаю, что если бы я смог добиться этого, то получил бы тот же эффект, что и в пункте 1 выше, без такого большого риска ошибок.
Из двух, вторая кажется наиболее привлекательной, но у меня нетдалеко смог сделать это.Вот некоторые вещи, которые я попробовал.
- Перелистывая панель «Ожидающие изменения» в Team Explorer, ища какие-то средства для удаления кредита на слияние.
Ищем вариантс помощью инструмента командной строки tf
.Самой близкой, что я получил, была следующая команда, которая, по крайней мере, дала мне понять, что будет применяться кредит слияния.
tf vc status / recursive / format: подробный
Отложить отложенные изменения, не сохраняя их локально.Отмените полку и удалите кредит слияния в процессе.Я начал думать, что это может быть опция, когда я увидел опцию /nomerge
в команде tf
unshelve
.У меня версия 15.129.28124.3.
d: \ Projects \ Main> tf unshelve /?Microsoft (R) TF - Team Foundation Version Control Tool, версия 15.129.28124.3 Авторские права (c) Корпорация Microsoft.Все права защищены.
Восстанавливает отложенные версии файлов, заметки о регистрации, комментарии и ассоциации рабочих элементов в текущем рабочем пространстве или удаляет существующий набор полок с сервера.
tf vc unshelve [/переместить] [shelvesetname [; имя пользователя]] [itemspec] [/ recursive] [/ nomerge] [/ noautoresolve] [/ noprompt] [/ login: имя пользователя, [пароль]]
К сожалению, этот вариант не дал того эффекта, на который я надеялся - кредит слияния не будет присутствовать в ожидающих изменениях, когда я перестану работать.Опция (и опция /noautoresolve
) здесь тоже странным образом не присутствует?
https://docs.microsoft.com/en-us/azure/devops/repos/tfvc/unshelve-command?view=azure-devops
Есть ли способ заставить это работать?Есть ли какой-то другой подход, на который я бы рассчитывал?
Примечание : Хотя Рэймонд Чен освещает GIT в своем Хватит собирать вишню, начинайте слияние серия, я нашел это весьма актуальным.