Управление сайтами с помощью Git

8

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

  • Используйте WHM для предоставления новой учетной записи. Я написал постустановочный хук для автоматической загрузки Joomla с Github и помещения его в соответствующий public_htmlкаталог, а также для создания базы данных и пользователя БД
  • Вручную установите Joomla через веб-интерфейс (хотя в настоящее время также ищите способ автоматизировать это)
  • Настройте голое репо выше public_html- это то, где пользователи толкают и тянут. Мы назовем этоorigin
  • Настроить стандартное репо в public_html
  • Добавить Joomla-специфичный .gitignore
  • Укажите голое хранилище в качестве нашего пульта ( git remote add origin ../repo.git)
  • Выполните git add ., затем git commit -m"Initial J! Commit", git push origin masterчтобы получить установку по умолчанию в нашем репо
  • Добавьте post-receiveхук к голому репо, чтобы автоматически вносить изменения в репо public_html(поскольку в голом репо разработчики будут выдвигать локальные изменения)
  • Добавьте post-updateхук в репо на public_htmlслучай, если кто-нибудь внесет изменения на сервере ... хотя они не должны

Я не слишком беспокоюсь о базах данных в данный момент. Моя главная проблема сейчас связана с дополнениями / изменениями файлов Joomla. Очевидно, что при установке шаблонов и расширений определенные файлы будут добавляться и удаляться. Точно так же обновления Joomla будут вызывать изменения.

Каков наилучший способ справиться с этими изменениями на сервере? Я думал о написании небольшого плагина , который работает onAfterRenderили аналогичный , который использует PHPGit для выполнения git add ., git commit git push origin master. Затем, в своей локальной копии, я могу просто вытащить, и все происходит. Или есть лучший способ?

codinghands
источник

Ответы:

4

Я не понимаю, почему вы создали голую / публичную структуру;

Я использую только public_html в качестве корня репозитория с очень полным .gitignore (который нужно обновлять после каждого нового обновления Joomla !, так как git statusвы находите новые файлы и добавляете их, чтобы они не становились версионными).

Разработчики подталкивают к развитию отраслей; в конце концов, когда релиз одобрен, он перебазируется на мастер, тестируется и отправляется в производство.

Я не использую хуки, но у меня есть пара сценариев, которые выводят соответствующие части базы данных, которыми я хочу поделиться, но оставляю пользователю возможность запускать сценарии импорта, если они захотят; таким образом, если кто-то работает над новым расширением, он сохранит свою конфигурацию, пока не будет готов к обмену.

Если вы используете less / sass, возможно, вы захотите запустить компиляцию с помощью post-commit-hooks, чтобы на сервере всегда были включены флаги сжатия.

- обновление: .gitignore -

Я не могу поделиться своим .gitignore здесь, так как он может меняться с каждым Joomla! Обновить. Прежде всего, убедитесь, что ваши eclipse .project .settings и т. Д. И другие файлы, которые вы хотите исключить, находятся в главном .gitignore вместе с configuration.php и .htaccess. Мой мастер .gitignore выглядит так для сайта с неприятными компонентами, которые записывают изменения в свои собственные папки вместо кеша и tmp; плюс он использует sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

поэтому я начинаю с копирования (из корня сети):

cp /home/_core/.gitignore .

Затем взорвите пакет обновления (полный пакет обновления) и запустите

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

ВНИМАНИЕ! Не запускайте поиск на живом сайте, только в пакете обновления!

Запустите пару тестов и посмотрите в состоянии git, что будет добавляться каждый раз, прежде чем завершить процедуру и написать для нее скрипты bash: это то, что я использую, но не гарантируется, что она будет соответствовать вашим требованиям на 100%

Риккардо Цорн
источник
Спасибо за ваш ответ - вы хотели бы обнародовать свой .gitignore? В настоящее время я единственный разработчик, и я довольно новичок в Git, поэтому я следовал некоторым рекомендациям по веб-разработке в Интернете, чтобы привести меня туда, где я нахожусь, что привело к открытой / публичной структуре.
codinghands
Нет, я не буду вставлять это здесь; Я только что добавил инструкции по его созданию
Риккардо Цорн
Привет Риккардо - спасибо, у меня уже есть достаточно полная .gitignore, просто хотелось увидеть какие-либо отличия.
codinghands
Вы можете игнорировать папки глобально, например: чтобы везде игнорировать папки кэша, просто добавьте cache/в свой .gitignore
jackJoe