Задать вопрос
AntonKravchenko
@AntonKravchenko

Как правильно подключать файлы из репозитория GitHub?

Доброго дня!
Занимаюсь доработкой CRM-системы разным клиентам, и в ходе работы оформил различные интеграции этой CRM с другими системами в виде PHP-файлов на GitHub. Репозиторий - ClientbasePro/Integrations. На каждую интеграцию пишу отдельный файл. Например, отдельный файл на интеграцию с Яндекс.Телефонией YandexTelephonyFunctions.php, отдельный на интеграцию с СМС-сервисом IQSMSFunctions.php и т.д. Все файлы расположены в одном этом репозитории.
Подключение клиентов выполняю так: на хостинге/VPS создаю папку ClientbasePro, в неё кладу файл composer.json такого содержания
{
    "require": {
        "php":">=5.3.0",
        "ClientbasePro/Integrations":"dev-master"      
    },
    "repositories":[
        {
            "type":"git",
            "url":"https://github.com/ClientbasePro/Integrations"
        }      
    ]
}

и подключаю autoloader
require 'ClientbasePro/vendor/autoload.php';
Далее настраиваю composer update через cron, чтобы всегда иметь актуальные версии PHP-файлов.

Проблема в том, что все PHP-файлы интеграций загружаются всем клиентам.
Вопрос, как нужно настроить локальный файл composer.json или что-то другое у каждого клиента, чтобы из общего репозитория **/Integrations загружались только нужные ему файлы?
  • Вопрос задан
  • 310 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
tomnolane
@tomnolane
профессиональный разработчик
создать разные ветки? одна для вас, другая/другие для клиентов? Название ветки содержит смысл подключаемого модуля. Это самый простой вариант + .gitignore
Более сложный - использовать submodule

p.s.
у вас всего одна ветка master -> это не есть хорошо. Обязательно разделяйте. Можно так:
ветка:
1) dev - разработка, новые фичи, фикс багов, новая версия продукта
2) master или release1-> главная рабочая ветка на продакшене
3) IQSMS + release1/dev
4) YandexTelephony + release1/dev
Ответ написан
amark
@amark
rush less, feel more
Я бы предложил вам регулировать подключение нужных модулей файлом конфига для каждого клиента. Файл конфига можно называть каким-то специфичным для клиента именем, что-то типа: client_muha.cfg.php, client_slon.cfg.php

А организацию пространства веток в Git'е я бы предложил делать более традиционно, например по принципу Git Workflow.
Ответ написан
AntonKravchenko
@AntonKravchenko Автор вопроса
пока настраивал .gitignore, сломалась синхронизация (
[RuntimeException]                                                                                                   
  Source directory /var/www/html/ais/include/ClientbasePro/vendor/ClientbasePro/Integrations has uncommitted changes

приходится удалять всю папку, и заново синхронизировать composer-ом.
Видимо, лучше под каждую интеграцию отдельный репозиторий создавать и подключать их:
ClientbasePro/YandexTelephonyIntegration
ClientbasePro/TelphinTelephonyIntegration
и т.д.
Спасибо всем ответившим!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы