Включение зависимостей в стратегию ветвления?

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

Для простоты предположим, что у меня есть следующая настройка:

  • У меня есть 1 проект веб-сайта (W1)
  • У меня есть 2 проекта веб-сервиса (S1, S2)
  • У меня есть 3 проекта библиотеки классов (L1, L2, L3)

Они управляются 3 решениями:

  • 1 решение, содержащее W1, L1, L2, L3 и использующее служебные ссылки на S1 и S2
  • 1 раствор, содержащий S1, L1, L2, L3
  • 1 раствор, содержащий S2, L1, L2, L3

Все это в настоящее время контролируется одним единственным репозиторием исходного кода, в котором я применяю схему ветвления, которая постоянно использует ветки Main, Development и Release.

Как видите, на библиотечные проекты ссылаются несколько раз, и, как и следовало ожидать, это иногда приводит к конфликтам, когда несколько разработчиков работают над одной и той же библиотекой. Как я упоминал ранее, на самом деле у меня гораздо больше библиотечных проектов. Сейчас есть решения, содержащие более 50 проектов, и почти все решения содержат одни и те же проекты. Чтобы сделать их более удобными в сопровождении, я хотел бы переместить проекты библиотек в их собственное решение и создать из них пакеты NuGet.

У меня также есть три среды, в которых развертываются вещи:

  • Среда TST, в которую ежедневно загружаются сборки ветки разработки.
  • Среда QA, в которую передаются сборки ветки Release.
  • ЖИВАЯ среда, в которую передаются сборки основной ветки

Проблема, с которой я столкнулся, заключается в том, что я не совсем понимаю, как мне включить пакеты NuGet в эту стратегию развертывания, поскольку разработка происходит во всех проектах в течение одного спринта, и если разработчик извлекает ветвь Release или основную ветвь. чтобы создать исправление, я не хочу, чтобы он испортил упомянутые пакеты NuGet и случайно добавил пакет разработки в основную ветку.

С точки зрения сборки можно просто использовать ту же стратегию ветвления при создании проектов библиотек и публиковать пакеты NuGet каждой ветви в другом репозитории. С точки зрения разработчика, я не знаю, как легко переключаться между несколькими репозиториями. Я не могу беспокоить разработчиков требованием изменить URL-адрес своего репозитория NuGet при проверке другого проекта или ветки.

Итак, вопрос: как правильно параллельно разрабатывать набор библиотек и интерфейсных проектов?

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


person Jensen    schedule 28.06.2014    source источник


Ответы (1)