Я разрабатываю интеграционное решение в Visual Studio 2019, которое должно включать несколько ранее разработанных прототипов для проверки концепции в Azure DevOps. Некоторые из этих существующих прототипов:
- Репозитории для одного проекта (только один .csproj)
- Многопроектные решения (несколько файлов .csproj в одном .sln)
Текущие подходы, которые я пробовал:
- Использование подмодулей 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