Magento и Subversion (SVN) - Приступая к работе со средой разработки?

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

Что я сделал до сих пор:

  1. Настройте веб-хостинг на хосте, который использует cPanel. Мой «Живой» сайт (mysite.com) будет находиться в ~ / public_html /.
  2. Создан поддомен «Разработка» (dev.mysite.com), который указывает на ~ / public_html / dev /.
  3. Запустил репозиторий SVN внутри ~ / svn /. Мое репо содержит ветки папок | теги | багажник.
  4. Импортировал только что незарезанный tar-архив magento (v.1.3.2.4) в свое репо по адресу trunk / magento.
  5. Создал две базы данных a. mysite_live и b. mysite_dev.
  6. Проверил код Magento из моего репо в ~ / public_html / dev / (dev.mysite.com)
  7. Запустил начальный установщик Magento, который заполнил мою базу данных mysite_dev и создал несколько файлов конфигурации (app / etc / local.xml - единственный, о котором я знаю - могут быть другие?).

Вот где я застрял:

Итак, у меня есть полностью функциональная установка Magento на моем рабочем месте. Что я хочу сделать сейчас, так это развернуть мой действующий сайт, идентичный моему сайту разработчиков, в качестве отправной точки. Поскольку конфигурация отличается в файле app / etc / local.xml; плюс Magento хранит значение для {{base_url}} внутри базы данных, это не так просто, как обновить мою магистраль svn с моего сайта разработчиков, а затем экспортировать / импортировать базу данных.

По мере того, как я буду продвигаться дальше, я хочу, чтобы был простой способ продвигать все на моем сайте разработчиков через SVN и на мой действующий сайт, а также синхронизировать базы данных, за исключением значения {{base_url}} . Я прочитал пару сообщений на форуме в другом месте, в которых упоминается использование svn: ignore, чтобы избежать определенных файлов и каталогов, зависящих от среды, но не знаю, как настроить на моем действующем сайте и убедиться, что все правильно синхронизировано.

Должен ли я просто проверить копию базового кода из trunk / magentoo из моего репо в пространство моего живого сайта, затем запустить установку, затем настроить svn на игнорирование local.xml и предположить, что они идентичны, за исключением локальных различий?

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

В качестве примечания - мне также нужно создать ветвь «Демо» кода для другого поддомена; показать людям в качестве доказательства концепции. Я, наверное, просто перейду через этот мост, когда подойду к нему. Может быть, к тому времени, когда я займусь этой задачей, все обретет смысл.

tl; dr version - как управлять разработкой Magento, живым кодом и базами данных с помощью SVN?

Спасибо всем, что нашли время, чтобы прочитать и ответить!


person PlasmaFlux    schedule 13.01.2010    source источник


Ответы (5)


Первое, что нужно сделать, это проверить установленную версию программы. Таким образом, копия программы в репо будет рабочей, которую вы действительно можете использовать. Затем вам нужно будет игнорировать некоторые файлы и каталоги, чтобы вы могли запустить другие среды. local.xml - хороший пример, но также можно установить игнорирование для следующего:

/var/report/*
/var/log/exception.log
/var/log/system.log
/var/locks/*
/var/session/*
/var/cache/*
/var/tmp/*
/media/tmp/*

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

Для базы данных обычной практикой является выполнение mysqldump в среде разработки и сохранение его в репозитории.

mysqldump -u user -p database > mysqldump.sql

Для этого вам нужно будет ввести свой пароль. Теперь копия в репо - это полная копия сайта. Чтобы настроить другую среду, вы изучите всю базу кода, а затем импортируете файл MySQL в базу данных.

Помните, что когда вы это делаете (и каждый раз, когда вы обновляете базу данных в репо, а затем хотите обновить изменения в других средах), вам нужно будет изменить {base_url} и {secure_url} в базе данных. Я видел несколько сред, в которых разработчики создавали сценарии для автоматического выполнения этого.

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

Надеюсь, это поможет. Если у вас есть другие конкретные вопросы, дайте мне знать.

Спасибо, Джо

person Joseph Mastey    schedule 14.01.2010
comment
Если вы не хотите изменять {base_url} и {secure_url}, вы можете установить тот же виртуальный хост - person Erdal G.; 04.09.2013

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

Для своего проекта я создал свою живую среду, установив Magento с нуля и просто проверил каталоги из SVN в следующих точках:

/app/code/local/MyOrg
/app/design/frontend/default/myorg
/skin/frontend/default/myorg

Любые сделанные вами настройки должны быть в одном из этих каталогов.

Я управляю этим каталогом вручную на живом сервере:

/app/etc/modules

Вам нужно только создать там файл, если вы сами создаете новый модуль.

person Vincent    schedule 27.01.2010

Я написал диспетчер модулей специально для решения этих проблем.

Я не рекомендую управлять версиями app / etc / local.xml, чтобы каждая среда могла иметь разные учетные данные базы данных, но я рекомендую управлять версиями всего остального с помощью modman. Кроме того, я рекомендую, чтобы modman запускал скрипт, который очищает кеш Magento и применяет обновления базы данных, такие как тот найдено здесь.

При правильном использовании вы можете выполнить «svn commit» в своем стволе и просто запустить «modman update-all» в других ваших средах (включая live) для обновления. Для более безопасного обновления 1.4 вы можете запустить

touch maintenance.flag; sleep 2; modman update-all; rm maintenance.flag
person ColinM    schedule 08.07.2010
comment
Под всем остальным я подразумеваю ваш код и другие файлы, такие как robots.txt. Modman полностью устраняет необходимость использования svn: ignore. - person ColinM; 08.07.2010

мы используем разные файлы local.xml. Именование зависит от вас, но рекомендуется использовать local.xml.qa или local.xml.live со строкой подключения для конкретной среды :-)

одно примечание: magento обрабатывает все файлы * .xml в папке app / etc, поэтому будьте осторожны при именовании

person Jaro    schedule 11.02.2012

Вот сценарий bash, который помогает установить значения свойств svn:ignore для проекта Magento.

person Roman Snitko    schedule 12.07.2012