Рекомендации по ветвлению TFS

У меня есть решение под названием "Framework", которое представляет собой сборку C# для моей бизнес-логики и транзакций данных.

У меня есть 4 приложения, которые используют Framework, 1 веб-сайт, 1 консольное приложение и 3 других типа приложений.

$/TeamProject
    /Framework
        /Dev
        /Main
        /Release
    /WebApp
        /Dev
        /Main
        /Release
    /WCFApp
        /Dev
        /Main
        /Release

У меня есть все это в одном командном проекте с каждой сборкой / приложением в отдельной папке.

Я хочу использовать функцию ветвления для каждого из приложений, совместно использующих сборку Framework, но я не знаю, каков наилучший способ ветвления Приложения вместе с Framework?

Какие-либо предложения?

Я знаю, как работает ветвление и слияние, но все примеры демонстрируют разветвление всего, что содержится в 1 папке.

3 ответа

Решение

В свете рисунка, представляющего каталог управления исходным кодом, я сделаю следующее предположение:

$ / TeamProject
   /Фреймворк
   /Приставка
   /Web
   /так далее.

Сначала вам нужно создать папку с именем Main в $/TeamProject (это будет ваша основная ветка), и переместите в нее все ваши папки верхнего уровня.

Итак, мы имеем:

$ / TeamProject
   /Главный
     /Фреймворк
     /Приставка
     / Web
     /так далее.

Теперь вам нужно конвертировать Main в филиал, вы можете сделать это, щелкнув правой кнопкой мыши на Main папку и выберите "Преобразовать в филиал". TFS теперь позволит вам ветвиться $/TeamProject/Main в $/TeamProject/ConsoleV2 (например) и работать над функциями для V2 консоли. Вы можете изменить Консольное приложение и Платформу, если требуется в этой ветке. Когда эта работа будет завершена, вы можете отменить интегрировать (объединить) изменения обратно в Main,

Не забывайте продолжать выполнять слияния прямой интеграции (слияния) из Main к вашей ветке функций и разрешению любых конфликтов, чтобы синхронизировать базы кода.

Используя этот подход, вы можете изменить любую часть любого из ваших продуктов за одну атомарную регистрацию, например, вы изменили API в вашей платформе, добавив новый обязательный параметр в метод, вы можете изменить его во всех своих приложениях на в то же время, и когда вы РИ сливаются в Main все будет обновлено.

Ваш основной вопрос, насколько я понимаю, таков: "Какова лучшая структура ветвления для ветвления моих приложений, которые зависят от Framework?" Если вы всегда собираете и версии / выпускаете их вместе, то проще и дешевле разделить их все вместе, как DaveShaw descibes; однако, если каждая из них разработана разными группами, имеет разные графики выпуска, разные версии и т. д., чем вы захотите создать ветку MAIN под каждой из них. В этом случае также должно быть понятно, кому принадлежат изменения в Framework. Обычно хорошей идеей является контроль доступа к регистрации только тем, кому это нужно для общих проектов, таких как Framework.

Если последний случай верен, то я думаю, что ваша текущая графика прекрасно с этим справится, но я бы сделал одно изменение; Держите ваши Релизы на том же уровне в иерархии, что и ветка MAIN, чтобы относительный путь оставался тем же для создания ссылок; это упростит ваши отображения рабочего пространства:

$/TeamProject
    /Framework
        /Dev
        /Main
        /Release1
        /Release2
        /Release3
        ...
    /WebApp
        /Dev
        /Main
        /Release
            /Release1
            /Release2
            /Release3
            ...
    /WCFApp
    ...

Если вы хотите иметь ветвление и слияние для отдельных проектов, единственный способ добиться этого в TFS - это создать отдельный проект TFS для каждого из проектов в вашем решении. Надеюсь, что это имеет смысл. Как только вы это сделаете, вы сможете разложить код из каждого проекта в свой рабочий каталог.

Мы недавно перенесли наш код из VSS в TFS. В то время мы должны были принять решение поместить весь код в 1 проект TFS или разбить их. Итак, у нас есть веб-сайт, бизнес-библиотека (которая используется веб-сайтом и другими приложениями), слой данных. Мы создали отдельный проект TFS для проектов библиотеки, веб-сайта и уровня данных. Каждый проект будет иметь магистральную ветку. Каждый, кому нужна последняя версия, разветвляет свою собственную копию из ствола и сливается обратно.

Надеюсь, это поможет.

Другие вопросы по тегам