Рекомендации по подмодулю Git: включение определенной папки из многопроектного решения Visual StudioC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Рекомендации по подмодулю Git: включение определенной папки из многопроектного решения Visual Studio

Сообщение Anonymous »

Проблема
Я разрабатываю интеграционное решение в Visual Studio 2019, которое должно включать несколько ранее разработанных прототипов для проверки концепции в Azure DevOps. Некоторые из этих существующих прототипов:
  • Репозитории для одного проекта (только один .csproj)
  • Многопроектные решения (несколько файлов .csproj в одном .sln)
Для репозиториев с одним проектом работают подмодули Git отлично. Однако я борюсь с многопроектными решениями, когда мне нужен только один конкретный проект/папка/модуль из репозитория.
Текущие подходы, которые я пробовал:
  • Использование подмодулей Git для всего репозитория:

    Код: Выделить всё

    MyNewSolution/
    ├── src/
    │   └── externals/
    │       └── ExistingRepo/  # Git submodule containing ALL projects
    │           ├── Project1/
    │           ├── Project2/  # The only one I need
    │           └── Project3/
    
  • Копирование определенной папки проекта вручную:

    Код: Выделить всё

    MyNewSolution/
    ├── src/
    │   └── externals/
    │       └── Project2/  # Manually copied, losing version control connection
    
Вопрос
Каков канонический способ включения определенного модуля /folder из многопроектного репозитория как подмодуль git? Я хочу:
  • Поддерживать связь системы контроля версий с исходным проектом
  • Не загромождать мое новое решение ненужными проектами< /li>
    Следуйте лучшим практикам для Git и Visual Studio
Минимальный рабочий пример
Исходная структура репозитория (

Код: Выделить всё

ExistingRepo
):

Код: Выделить всё

ExistingRepo/
├── ExistingRepo.sln
├── Project1/
│   └── Project1.csproj
├── Project2/
│   └── Project2.csproj
└── Project3/
└── Project3.csproj
Новая структура решения (желательно):

Код: Выделить всё

MyNewSolution/
├── MyNewSolution.sln
└── src/
├── MainProject/
│   └── MainProject.csproj
└── externals/
└── Project2/  # Want this as a submodule from ExistingRepo
└── Project2.csproj
Каковы наилучшие методы достижения этой структуры при сохранении надлежащего контроля версий?
Что я рассмотрел
  • Разреженная проверка Git (неудачная попытка)
    • Плюсы: поддерживает соединение с Git
    • Минусы: кажется сложным для CI/CD
  • Разрушение исходного репозитория (того, который я прямо сейчас двигаюсь вперед)
    • Плюсы: четкое разделение
    • Минусы: существенный рефакторинг существующей кодовой базы
  • Принятие полного репозитория в качестве подмодуля (не нравится)
    • Плюсы: простое управление git
    • Минусы: запутанное решение
  • Пакет NuGet (не знаю, как создавать релизы/артефакты/конвейеры в Azure DevOps)
    • Плюсы: чистое управление зависимостями
      Минусы: накладные расходы на управление пакетами.


Подробнее здесь: https://stackoverflow.com/questions/791 ... roject-vis
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»