Стратегия git ветвления для модульной основы проекта
Я веду разработку абстрактного проекта на фреймворке php. По сути я делаю заготовку для будущих проектов. Проекты могут быть разными и включать в себя применение БД или нет, аналогично с авторизацией пользователей. В моем видении авторизация пользователей и регистрация без БД не возможна. Получается в системе контроля версий авторизация — это отдельная ветка, причем ответвление идет от ветки БД. И вот итог: Большое, красивое дерево с кучей ответвлений. И вот появился проект и его надо реализовать используя это дерево. Вот тут и вопрос, как это лучше сделать. Один из вариантов, который пришел мне в голову: создать отдельную ветку у корня и cherry-pick перенести все нужные коммиты. Но мне кажется, что такое решение слишком топорно и не гибко, есть предложения лучше?
гит здесь не при чём, у вас банальные зависимости, в мире php это решает через pear или composer, в других языках есть свои пакетные менеджеры. каждый пакет хранится в своём репозитории и имеет лишь файлик, прописывающий зависимости.
Я правильно понимаю что одно из предложенных вами решений позволит разделить написанный мной код на пакеты с зависимостями и свободно их применять и откатывать?
да, конечно. вот пример пакетов laravel для ACL github.com/Zizaco/entrust/blob/master/composer.json, прописана связь на сам фреймворк и либу для работы с базой данных.
«illuminate/support»: «4.0.x»,
«laravelbook/ardent»: "*"
а в require-dev, пакеты которые нужны при разработке, для прогонов тестов, но не нужны на продакшене.
нет, личные репозитории это очень легко. есть глобальный конфиг компосера, он находится
.composer/config.json
%appdata%\roaming\Composer\config.json
туда просто добавляешь путь к своему репозиторию, локальному, либо удалённому. В репозитории, естественно боллжен быть свой файл компосера с названием, описанием пакета и его зависимостями.
репозитории прописываются примерно так "repositories": [
{
"type": "vcs",
"url": "/git/frozennode/administrator"
}
]
я даже для чужих либ, делаю свою локальную ветку, чтобы собиралось быстрее и не зависеть от лагов гитхаба, только вот обновлять приходится ручками через скрипт. всё довольно легко, только документация довольно куцая, вроде и много, но чёрт ноги сломит, разбираясь.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.