Open sergey-s-betke opened 7 years ago
Уже сейчас ITG.MakeUtils используется не в одном проекте.
При этом принимаем за основу git-flow.
Собственно описание файла зависимостей пакетов предлагаю описывать в синтаксисе makefile, добавив для этого необходимые макросы, не более. На мой взгляд, make для этого более, чем достаточно.
Для взаимодействия с git целесообразно использовать posh-git или/и PowerShellForGitHub, PowerShellGet.
Возможно, для рекурсивной установки зависимостей стоит посмотреть на DSC.
Пример реализации PackageProvider для GitLab на PowerShell: https://github.com/akamac/GitLabProvider Аналогично можно сделать и для нашего случая как раз на базе указанного выше примера. Тогда получим возможность устанавливать пакеты и через PackageManagement, что правильно.
Для использования git из PowerShell стоит рассмотреть NuGet пакет с libgit2sharp.nativebinaries, C# обёрткой вокруг libgit2.
Для разумной интеграции библиотек в проекты через git subtree сейчас уже добавил необходимые макросы в git.mk. Однако, включать все файлы библиотеки, включая тесты и прочее - не очень разумно.
Поэтому предлагаю рассмотреть такой вариант. В репозиториях библиотек (да и не только) все те файлы, которые являются собственно итоговой библиотекой, должны быть размещены в отдельном подкаталоге. А все "технологические" файлы (тесты, параметры build серверов и так далее - не должны входить в этот каталог. Тогда после слияния релиза с master веткой можно выполнить git subtree split и выделить этот подкаталог в отдельную ветку. В итоге получим "чистую" библиотеку в отдельной ветке, которую и можно будет интегрировать через git subtree в другие проекты.
Стоит обдумать такой вариант и описать более подробно.
Вижу смысл в реализации своеобразного пакетного менеджера на базе репозиториев git.