Использование GIT с Joomla
Мы являемся компанией, занимающейся веб-дизайном, идем по пути создания системы управления версиями, а также всех процессов вокруг того, как мы будем ее использовать и т.д. Мы рассматриваем возможность использования git система управления версиями.
Мы в основном разрабатываем наши веб-сайты в Joomla! Система управления контентом (CMS). Я хотел бы знать, как другие компании управляют своими репозиториями при работе с CMS. В основном мы занимаемся созданием шаблонов, и мы иногда настраиваем компоненты или плагины, которые мы установили.
Мои главные вопросы:
- Лучший способ хранить все файлы (в том числе файлы Joomla) в репозитории или просто файлы, которые вы создаете или изменяете сами?
- Храните ли вы копию базы данных (которую Joomla использует для ее работы и хранения содержимого) где-то, для учета изменений в базе данных?
Ответы
Ответ 1
Для вашего первого вопроса обычно большинство групп будут проверять все файлы, связанные с проектами (исключая журналы и временные файлы). Если вы хотите сохранить свою базу данных, сохраните дамп базы данных (а не двоичные файлы). Вы должны обязательно включить как данные, так и схему.
Ответ 2
Я знаю, что этот вопрос уже получил принятый ответ, но, возможно, кто-то вернется к этому и найдет его полезным.
- Я думаю, что отслеживание всей Joomla и попытка исключить основные файлы практически невозможно, и как @vicgilbcn говорит, что это может стать кошмаром.
- С другой стороны, если вы разрабатываете компонент для J! который "к сожалению" относится к "компонентам/com_mycomp", "administrator/components/com_mycomp" и, возможно, "media/com_mycomp", у вас должно быть 3 отдельных репозитория git для отслеживания его, поэтому это тоже нежизнеспособно.
Итак, что я придумал и, кажется, хорошо работает, вот что:
Скажем, у меня нормальный J! вставляя мой компонент com_mycomp внутри.
- Я создаю папку за пределами базы данных joomla и называю ее "COMMON".
- в "COMMON" Я создаю папку "joomla"
- в "COMMON/joomla" Я создаю папку "myComp", которая будет содержать всю базу кода моего компонента
- в "COMMON/joomla/myComp" Я использую структуру папок Joomla, а я MOVE (не копировать) 'components/com_mycomp', 'administrator/components/com_mycomp' и 'media/com_mycomp' внутри него.
- тогда я вернусь туда, где я удалил папки и создаю символические ссылки в новые местоположения.
Таким образом, теперь можно создать репозиторий git в COMMON/joomla/myComp.
Очевидно, что эта среда должна быть локальной средой разработки, где вы можете настроить конфигурацию apache/php без последствий для безопасности, чтобы сделать эту работу. (Я не могу вспомнить, действительно ли мне пришлось выполнять какие-либо специальные модификации конфигурации, чтобы это работало - если оно не проверяет журналы...)
На самом деле это решение разрешает другую проблему. Работая таким образом, вы можете фактически привязать свои папки кодовых компонентов к двум различным развертываниям Joomla (например, J! 2.5.x и J3.xx) и иметь возможность мгновенно разрабатывать/проверять ваш компонент compatibiliy против разных версий.
Ответ 3
Эта статья Joe LeBlanc - это одна из немногих вещей, которые я нашел в Revision Control в Joomla!: http://joomlaablog.blogspot.it/2010/11/how-to-track-your-joomla-project-with.html
Существуют две общие стратегии, которые можно использовать для использования Git с Joomla: либо отслеживать всю установку Joomla, либо отслеживать ее конкретное расширение. Главным сдерживающим фактором для отслеживания самой Joomla с Git - это чистый размер кодовой базы Joomla. Хотя Git разумно быстро, он все равно может быть переполнен для отслеживания всей установки Joomla если вы добавляете один шаблон или модуль.
С другой стороны, помещение всего в Git позволяет определить, когда исправления были применены к сайту Joomla. Это может быть полезно, когда вы пытаетесь отследить проблему до определенного патча. Кроме того, если вы создаете несколько расширений, которые все разработаны для совместной работы у вас может не быть выбора, кроме как разместить весь сайт под управлением версии.
Если вы работаете над одним расширением, и вы знаете его единственное что будет частью проекта, может быть более выгодным отслеживать один каталог. Единственный компонент только для интерфейса, только для бэкэнд компонент, модуль или шаблон - все кандидаты на отслеживание отдельно от установки Joomla. Его трудно отслеживать плагины таким образом, из-за того, что файлы плагинов .php размещены бок о бок в общих папках. Отслеживание полных компонентов таким образом также проблематично, поскольку изменения в бэкэнд могут влиять на поведение в интерфейс.
Ответ 4
Если вы решите использовать первый вариант (отслеживать весь Joomla), вы должны .gitignore все ядро и каждый раз, когда добавляется внешнее расширение. В противном случае это кошмар, когда кто-то устанавливает расширение и фиксирует его. Затем вам нужно открыть его после потяжки, а иногда и не работать. Также изменить версии Joomla трудно.
Я выступаю за разные репозитории для разных расширений, но я все еще ищу способ иметь одно репо для всего компонента (admin + front + install). Любая идея (возможно, подмодули или сложение поддерева)?
Ответ 5
Мы находимся в аналогичной ситуации с вами - дизайнерское агентство с сайтами Joomla.
Мы используем Subversion, причем каждый веб-сайт является хранилищем. Когда мы запускаем проект, мы загружаем последнюю версию Joomla и размещаем ее в SVN. Затем мы проверяем сайт с SVN на локальный компьютер и работаем над ним, проверяя при необходимости.