Подтвердить что ты не робот

Настройка репозитория Git для решения .NET

У меня есть решение с 15 проектами С#, и я пытаюсь создать для них эффективный репозиторий git. Должен ли я создавать репозиторий на этом уровне или для каждого проекта в рамках решения?

WebServices/
|- WebServices.sln
|- WebService1/
 `- WebService1.csproj
|- WebService2/
 `- WebService2.csproj

Решение имеет ссылку на проект ../framework/framework.csproj, которая представляет собой отдельный репозиторий, и все другие проекты имеют ссылку. Проекты в рамках решения никак не связаны, но все они используют инфраструктуру.

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

Есть ли у вас какое-нибудь руководство для меня, как достичь этого наилучшим образом?

4b9b3361

Ответ 1

Нет никакого ответа на то, как настроить ваш репозиторий. Это зависит от ваших конкретных потребностей.

Некоторые вопросы, которые вы должны задать себе, включают:

  • Собираются ли все проекты выпускаться и выпускаться отдельно?
  • Являются ли проекты действительно независимыми друг от друга?
  • Как структурирована ваша команда разработчиков? Разделяют ли отдельные разработчики один проект?
  • Является ли ваш рамочный проект стабильным?
  • Создает ли ваш процесс сборки каждый проект отдельно?

Предполагая, что ответы на все вышеизложенное "да", я бы установил его так:

  • Продолжайте поддерживать код структуры в своем собственном репозитории и публикуйте его на внутреннем сервере с помощью NuGet (как указано в комментарии ssube).
  • Создайте отдельный репозиторий для каждого проекта, каждый со своим собственным файлом решения.

Если вы можете сказать "да" всем, кроме # 5 (и, возможно, № 1), то я бы добавил еще один репозиторий, который состоит из подмодулей каждого из отдельных проектов и глобального файла решения, который ваш сервер сборки можешь использовать. Если вы добавите новый проект, вам также необходимо запомнить этот репозиторий!

Если вам нужно сказать "нет" на # 2, просто создайте один репозиторий.

Если вам нужно сказать "нет" на # 3, вам нужно будет сделать судебный вызов, между разделением кода и необходимостью разработчиков переключиться между репозиториями. Вы можете создать отдельный репозиторий, включая подмодули, но если все ваши разработчики завершат использование этого репо, вы действительно вводите новое обслуживание с небольшим усилением.

Если ваша структура нестабильна (# 4), вы можете включить ее в качестве подмодуля в любом из этих случаев. Я рекомендую, чтобы как только он стал стабильным, тогда вы изучите удаление подмодуля и переход на NuGet в это время.

Ответ 2

То, что я сделал для такой ситуации, было следующим. Обратите внимание, что в моем случае было 2-3 разработчика.

Итак, у меня есть 3 вещи в этом:

  • Пустая структура проекта, которую я хотел бы реплицировать [ДОПОЛНИТЕЛЬНО]
  • Общие проекты библиотеки
  • Фактические конечные проекты, которые используют общие проекты библиотек

1) Я просто создаю свою структуру каталогов разработки, и я помещаю файл .gitkeep в каждом и каждом из них, чтобы включить git. Таким образом, когда я хочу настроить себя на новом ПК, я просто клонирую это, и у меня есть своя пустая структура "вселенной". Затем я заполняю (git клон) проектами, которые мне нужны.

2) Проект общих библиотек - это просто нормальное репо.

3). Мои конечные проекты ссылаются на общие проекты библиотек. Есть пробки и минусы об этом и зависит от вашей ситуации, но я получаю то, что я могу изменить общие библиотеки либо непосредственно из проекта общей библиотеки, либо из конечного проекта, который ссылается на него. В обоих случаях я получаю изменения в git и фиксирую как обычно, так и отдельно.

В вашем случае у меня будет моя пустая структура, а затем сделаю 2 отдельных клона. Рамочный проект в правильном месте, а затем весь репозиторий webservices.

Это зависит от вас, если вы хотите иметь отдельное репо для каждого веб-сервиса или одного для всех. Это зависит от вашего счета и рабочего потока.

Также не забудьте правильный .gitignore Здесь: ССЫЛКА

Ответ 3

Если

  • вы действительно хотите, чтобы все проекты были в одном и том же решении.
  • общий проект "Framework" находится в активной разработке (и некоторые изменения для одного проекта могут сломать другие...)

Я думаю, что у вас должен быть каждый WebService как проект git с собственной копией проекта Framework как подмодуль:

WebServices/
|- WebServices.sln
|- WebService1/
 `|-.git  
  |-WebService1.csproj
  |-Framework (as submodule)
|- WebService2/
 `|-.git  
  |-WebService2.csproj\
  |-Framework (as submodule)

Таким образом, каждый WebService будет использовать версию Framework, совместимую с.

(конечно, вы должны знать о функциях подмодуля git... вы могли бы, например, прочитать this, особенно раздел "Проблемы с субмодулями"!)

Важно. При такой конфигурации каждый развернутый веб-сервис должен ссылаться на библиотеку Framework с использованием фактической версии!

Ответ 4

В зависимости от того, насколько независимым будет разработка для каждого из ваших проектов, вы можете рассмотреть два варианта.

  • если вы в основном работаете над полным решением - создайте одно репо для всего решения

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

Git Советы по субмодулям