IT-Service / ITG.MakeUtils

Библиотека подключаемых модули для makefile
0 stars 0 forks source link

Реализовать пакетный менеджер на базе git репозиториев #7

Open sergey-s-betke opened 7 years ago

sergey-s-betke commented 7 years ago

Вижу смысл в реализации своеобразного пакетного менеджера на базе репозиториев git.

sergey-s-betke commented 7 years ago

Уже сейчас ITG.MakeUtils используется не в одном проекте.

При этом принимаем за основу git-flow.

sergey-s-betke commented 7 years ago

Собственно описание файла зависимостей пакетов предлагаю описывать в синтаксисе makefile, добавив для этого необходимые макросы, не более. На мой взгляд, make для этого более, чем достаточно.

sergey-s-betke commented 7 years ago

Для взаимодействия с git целесообразно использовать posh-git или/и PowerShellForGitHub, PowerShellGet.

sergey-s-betke commented 7 years ago

Возможно, для рекурсивной установки зависимостей стоит посмотреть на DSC.

sergey-s-betke commented 7 years ago

https://docs.microsoft.com/en-us/powershell/dsc/dsccicd

sergey-s-betke commented 7 years ago

Пример реализации PackageProvider для GitLab на PowerShell: https://github.com/akamac/GitLabProvider Аналогично можно сделать и для нашего случая как раз на базе указанного выше примера. Тогда получим возможность устанавливать пакеты и через PackageManagement, что правильно.

sergey-s-betke commented 7 years ago

https://github.com/Ticketmaster/poshspec/wiki/Introduction https://github.com/PowerShell/PSScriptAnalyzer

sergey-s-betke commented 7 years ago

https://github.com/libgit2/libgit2sharp/tree/master/LibGit2Sharp

sergey-s-betke commented 7 years ago

Для использования git из PowerShell стоит рассмотреть NuGet пакет с libgit2sharp.nativebinaries, C# обёрткой вокруг libgit2.

Пример: https://github.com/tomoh1r/PoshGit2/tree/master/Lib

sergey-s-betke commented 7 years ago

https://github.com/eriklieben/Posh-GitFlow

sergey-s-betke commented 6 years ago

Для разумной интеграции библиотек в проекты через git subtree сейчас уже добавил необходимые макросы в git.mk. Однако, включать все файлы библиотеки, включая тесты и прочее - не очень разумно.

Поэтому предлагаю рассмотреть такой вариант. В репозиториях библиотек (да и не только) все те файлы, которые являются собственно итоговой библиотекой, должны быть размещены в отдельном подкаталоге. А все "технологические" файлы (тесты, параметры build серверов и так далее - не должны входить в этот каталог. Тогда после слияния релиза с master веткой можно выполнить git subtree split и выделить этот подкаталог в отдельную ветку. В итоге получим "чистую" библиотеку в отдельной ветке, которую и можно будет интегрировать через git subtree в другие проекты.

Стоит обдумать такой вариант и описать более подробно.