Проекты начальной загрузки с: частными репозиториями 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,

Но это на другой день.:)

Другие вопросы по тегам