PHP проект организации - PullRequest
7 голосов
/ 31 января 2012

В настоящее время у меня просто куча php-файлов, которые находятся в папках под управлением исходного кода. По логике вещей у меня есть коллекция связанных проектов и общая база данных.

  • Project 1 - это веб-приложение, взаимодействующее с базой данных.
  • Проект 2 - это некоторые фоновые процессы, также взаимодействующие с одной и той же базой данных.
  • Project 3 - это библиотека, включающая расширенные объекты подключения к базе данных и другие служебные функции.

Проекты 1 и 2 зависят от кода библиотеки.

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

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

Должен ли я преобразовать библиотеку в пакет PEAR и установить этот пакет в масштабе всей системы. Или лучше, чтобы проекты 1 и 2 были в некотором смысле «построены / развернуты» и содержали копию библиотеки на этом этапе сборки. Этот подход подразумевает использование какого-либо инструмента управления сборкой, такого как Phing / PHP-Maven.

Ответы [ 2 ]

3 голосов
/ 31 января 2012

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

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

Другие инструменты контроля версий могут предлагать аналогичные функции.Некоторые проекты, такие как Symfony2, также включают скрипт для управления зависимостями, однако они поддерживают только git.

1 голос
/ 31 января 2012

Возможно, поскольку я пользователь maven, я бы предпочел объявить project3 как зависимость project1 и project2 и использовать maven в качестве инструмента управления сборкой и средства разрешения зависимостей (среди прочего).Проблему версий, на которую указывает @ Louis-Philippe Huberdeau, можно избежать, используя версии и объявляя зависимости зависящими от версии: то есть, для проектов разработки может зависеть от project3-1.0-SNAPSHOT, а для выпуска зависимость станет project3-1.0-RELEASE,Таким образом, три проекта могут развиваться независимо.Версионирование и развертывание артефактов может быть выполнено Maven.Позже, если вам это нужно, вы можете использовать CI-сервер, например, Hudson или Travis CI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...