Проекты начальной загрузки с: частными репозиториями git, Composer и Satis
РЕДАКТИРОВАТЬ: То, что я пытался достичь здесь, может быть сделано в рамках проекта Yeoman.
Итак, я установил git+composer+ assign на частном сервере, все работает нормально, я в восторге от этого. Должен любить их всех.
Я использую git для проектов и для частных пакетов, поэтому теперь основной рабочий процесс выглядит следующим образом:
git clone git@myserver:the-project-name
composer install
Это позволит клонировать репозиторий проекта и установить необходимые зависимости. Фантастика.
Но я также хочу иметь возможность использовать некоторые "скелет-репо" и просто копировать их содержимое в мой проект, сохраняя информацию о зависимостях.
Возьмите этот пример:
- Я создаю git-репозиторий под названием: test-project, а затем клонирую его локально.
- У меня есть еще одно git-репозиторий под названием fb-bootstrap, который является каркасом для приложений Facebook.
- У меня также есть другой скелет git-репозитория начальной загрузки, который я также хочу включить: например, это будет папка api /. Давайте назовем это: api-bootstrap
- Поэтому я тоже хочу их клонировать, но, конечно, я не могу этого сделать, потому что у меня уже есть git-репо в той же директории.
- Возможное решение: я использую следующий код, поэтому получаю только файлы: 'git archive --format=tar --remote=git@myserver:the-bootstrap-repos HEAD | tar xf -'
Это нормально, НО у него проблема: у меня разные зависимости - разные файлы composer.json. - для репозиториев fb-bootstrap и api-bootstrap, поэтому мне нужно найти способ установить их все.
Обратите внимание, что я не использую composer для этого, так как я не могу поместить что-либо в vendor / folder, кроме классов автозагрузки php, потому что доступ к этой папке ограничен.
Снятие этого ограничения также не решит проблему, потому что, если я добавлю зависимость позже и вызову composer update
Я могу потерять изменения, внесенные в папки начальной загрузки.
Субмодули и хак с единственными копиями файлов, приведенные выше, не совсем помогают по вышеуказанным причинам.
Резюме:
Мне нужно решение, в котором я могу включить столько загрузочных репозиториев, сколько мне нужно, и после того, как я закончу с этим, я смогу установить все зависимости.
Как это:
- Git начать репозиторий проекта,
- git локально клонирует репозиторий проекта,
- достань пару нужных мне репозиториев,
- установите зависимости, которые я объявляю для проекта, и все зависимости загрузочных репозиториев.
Есть ли способ сделать это?
Кроме того: если вы думаете, что я подхожу к этой проблеме совершенно неправильно, пожалуйста, не стесняйтесь сообщить мне. В любом случае, я приспосабливаюсь к новым методам, я не боюсь изменений.:)
Любой комментарий приветствуется.
1 ответ
Тем временем я решил проблему более или менее.
Во-первых, я отказался от идеи полной автоматизации всего.
Просто слишком много проблем с объединением различных загрузочных репозиториев; все может случиться, правда.
Хотя я хотел автоматизировать еще одну вещь - объединение различных зависимостей загрузочных репозиториев.
Таким образом, после этих изменений я придумал действительно простой скрипт, использование которого выглядит примерно так: (Обратите внимание, что gitcopy - это скрипт, который я использую в своей среде Linux, который копирует только содержимое репозитория.)
gitcopy git@server:bootstrap // Grabs the bootstrap.php file from a private repo.
php bootstrap.php fb-bootstrap api-bootstrap
Вторая команда создаст новую папку: "bootstrap" и клонирует репозитории в нее. Затем он удаляет папки.git, так как там мне не нужен контроль версий. Он также загружает базовый файл composer.json и объединяет все остальные файлы composer.json из загрузочных пакетов в нем. Файлы начальной загрузки composer.json удаляются, поэтому я могу просто скопировать содержимое начальной загрузки в корневую папку моего проекта без запроса перезаписи других файлов composer.json.
В общем, это просто хороший маленький инструмент для сбора всего, что мне нужно, и после этого я могу сам справиться с возможными проблемами.
Благодаря этому я мог использовать генераторы Yeoman и по-прежнему использовать свои собственные файлы начальной загрузки, не беспокоясь о конфликтах.
Единственное, на что я не мог посмотреть, это как сделать этот скрипт исполняемым phar, чтобы он мог работать как композитор. Вместо того, чтобы взять репозиторий bootstrap для bootstrap.php, я мог бы просто сказать: bootstrap api webapp etc
,
Но это на другой день.:)