У меня возникли проблемы с пониманием того, как настроить TFS в соответствии с лучшими практиками, предоставленными командой TFS Ranger. Проблема такова:
В моей компании есть несколько продуктов, которые используют общую общую базу кода.
> $/Core
> -> /Main/Source (Parent Branch)
>
> $/Product1
> -> /Main/Source
> -> /Main/Source/Core/Source (Child Branch from $/Core)
> -> /Main/Source/...
>
> $/Product2
> -> /Main/Source
> -> /Main/Source/Core/Source (Child Branch from $/Core)
> -> /Main/Source/...
Поэтому у нас есть один коллектив команды и, скажем, три командных проекта для этого примера. ($/* - командный проект)
Наша начальная ветвь релиза - это немного боль. Вместо того, чтобы разветвляться на /Main to/Releases или /Main to/Development, мы разветвляем каждый проект по отдельности. (Проект не проект проекта...).
Это связано с невозможностью иметь вложенные корни ветвей. (См. Ошибки TFS: TF203028 и TF203071)
В соответствии с TFS Ranger Guide и нашим пересмотренным подходом к выпуске ветвей, исправлениям, событиям мы должны разветвляться от /Main, а не /Main/Source/Proj 1,/Proj2,/Proj3 и т.д. Это просто становится довольно большим досадой.
В идеале мы хотели бы:
> $/Product1
> -> /Main/ (Branch - Parent)
> -> /Releases
> -> /1.x
> /1 Service Pack (Child Branch from $/Product1/Main
> -> /1.0
> -> /1.0 Hotfix (Child Branch from $/Product1/Releases/1.x/1 Service Pack)
> -> /1.0 RTM (Child Branch from $/Product1/Releases/1.x/1.0/1.0 Hotfix - Read Only)
> -> /1.0.22 RTM (Child Branch from $/Product1/Releases/1.x/1.0/1.0 Hotfix - Read Only)
> -> /1.5
> -> /1.5 Hotfix (Child Branch from $/Product1/Releases/1.x/1 Service Pack)
> -> /1.5 RTM (Child Branch from $/Product1/Releases/1.x/1.5/1.5 Hotfix - Read Only)
Решения: 1. Мы можем преобразовать каждую общую ветвь (т.е. $/Core) обратно в обычные папки. Таким образом, папка под /Main не является корнем ветки. Затем мы можем выполнить необоснованное слияние из $/Product1/Main/Source/Core/Source обратно в родительский $/Core/Source.
Есть ли у кого-нибудь какой-либо опыт с необоснованными слияниями. То, что я прочитал от Microsoft, - это исключения, которые не должны быть обычным явлением. MS заявляет, что если вы правильно настроили свои проекты с помощью TFS, вам никогда не понадобится выполнять необоснованное слияние.
Как это возможно при ветвлении в командных проектах?!? В любом доме разработки программного обеспечения должно быть обычным делом иметь общие библиотеки среди продуктов.
Я также открыт для других решений.
Спасибо!