2014-01-23 5 views
1

EDIT: То, что я пытался достичь здесь, может быть сделано проектом Yeoman.Проекты начальной сборки с: частными git repos, Composer и Satis


Так я создал мерзавца + композитор + Satis на частном сервере, все работает отлично, я действительно в восторге от этого. Полюбила их всех.

Я использую Git для проектов, так и для частных пакетов, так что теперь основной рабочий процесс выглядит следующим образом:

git clone [email protected]:the-project-name 
composer install 

Это будет клонировать репозиторий проекта, и установить необходимую зависимость. Фантастика.

Но я также хочу использовать некоторые «скелеты-репозитории» и просто копировать их содержимое в свой проект, сохраняя информацию о зависимости.

Возьмем такой пример:

  • создать GIT репозиторий под названием: тест-проект, а затем клонировать его на месте.
  • У меня есть еще один git repo, называемый fb-bootstrap, который является скелетом для приложений facebook.
  • У меня также есть другой загрузочный скелет git repo, который я также хочу включить: например, это будет api/folder. Назовем это: api-bootstrap
  • Так что я хочу также клонировать их, но, конечно, я не могу этого сделать, потому что у меня уже есть git repo в том же каталоге.
  • Возможное решение: я использую следующий код, поэтому я получаю только файлы: 'git archive --format = tar --remote = git @ myserver: the-bootstrap-repos HEAD | деготь XF -»

Это прекрасно, НО имеет проблему: У меня есть различная зависимость - Различные composer.json файлы. - для fb-bootstrap и api-bootstrap repos, поэтому мне нужно найти способ установить их все.

Обратите внимание, что для этого я не использую композитор, так как я не могу помещать что-либо в папку поставщика/папку, отличную от автозагружаемых php-классов, поскольку доступ ограничен этой папкой.

Поднятие этого ограничения также не решит проблему, потому что, если я добавлю зависимость позже, и я вызываю composer update, я могу потерять изменения, внесенные в папки начальной загрузки.

Подмодули и взломанные файлы с единственными экземплярами не совсем сокращают его из-за вышеупомянутых причин.

Резюме:

Мне нужно решение, где я могу включать в себя как можно больше самозагрузкой сделок РЕПО, как мне нужно, и после того, как я закончу с этим, я должен быть в состоянии установить все зависимости.

Как это:

  • мерзавец INIT репо проекта
  • мерзавец клонировать проект репо локально,
  • принести пару содержания Bootstrap Repos, я нужна,
  • установить зависимости Заявляю для проекта и всех зависимостей репозитория бутстрапа.

Есть ли способ сделать это?

Также: Если вы считаете, что я подхожу к этой проблеме совершенно неправильно, пожалуйста, не стесняйтесь говорить мне. В любом случае, я приспосабливаюсь к новым методам, я не боюсь изменений. :)

Прокомментирован любой комментарий.

+0

Любая причина не просто сделать api-bootstrap библиотекой Composer? – nthall

+0

Да: «Обратите внимание, что для этого я не использую композитор, так как я не могу помещать что-либо в папку поставщика/папку, отличную от автозагружаемых php-классов, поскольку доступ ограничен этой папкой. Поднятие этого ограничения также не решит проблему, потому что, если позже я добавлю зависимость, и я вызову обновление композитора, я могу потерять изменения, внесенные в папки начальной загрузки. " – ZeeCoder

+0

Извините, не совсем понял на моем Первое, что можно сказать о использовании пользовательского установщика для установки api-bootstrap где-то помимо поставщика /? – nthall

ответ

2

Я решил проблему более или менее тем временем.

Во-первых, я отказался от идеи полностью автоматизировать все.

Слишком много проблем с объединением различных перезагружаемых репозиториев; на самом деле все может случиться.

Одна вещь, которую я хотел еще автоматизировать, заключается в слиянии различных зависимостей репозитория загрузки.

Таким образом, после theese изменений, я придумал очень простой сценарий, использование которого выглядит следующим образом: (Обратите внимание, что gitcopy скрипт, я использую на моей Linux среду, которая копирует только содержимое хранилища.)

gitcopy [email protected]:bootstrap // Grabs the bootstrap.php file from a private repo. 
php bootstrap.php fb-bootstrap api-bootstrap 

Вторая команда создаст новую папку: «bootstrap» и клонирует репозитории в нее. Затем он удаляет папки .git, так как мне не нужен контроль версий. Он также загружает базовый композитор.json и объединяет все остальные файлы composer.json из загрузочных файлов в нем. Файлы bootstrap composer.json удаляются в процессе, поэтому я могу просто скопировать содержимое начальной загрузки в корневую папку моего проекта, без подсказки о перезаписывании других файлов composer.json.

Так что, в принципе, это просто хороший инструмент для захвата всего, что мне нужно, и после этого я смогу справиться с возможными проблемами самостоятельно.

С этим я мог бы использовать генераторы Yeoman и по-прежнему использовать свои собственные файлы начальной загрузки, не беспокоясь о конфликтах.

Единственное, на что я не мог смотреть, - это сделать этот скрипт исполняемым файлом phar, чтобы он мог работать как композитор. Вместо того, чтобы захватить бутстрап-репо для bootstrap.php, я мог бы просто сказать: bootstrap api webapp etc.

Но это еще один день. :)