Подтвердить что ты не робот

Magento & Subversion (SVN) - Началась разработка среды разработки?

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

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

  • Настройте веб-хостинг на хосте, использующем cPanel. Мой сайт "Live" (mysite.com) будет находиться в ~/public_html/.
  • Создал субдомен "Разработка" (dev.mysite.com), который указывает на ~/public_html/dev/.
  • Начал репозиторий SVN внутри ~/svn/. В моем репозитории есть папки с папками | теги | Ствол.
  • Импортировал свежезаваренный неаргированный пурпурный архив (v.1.3.2.4) в мое репо на туловище /magento.
  • Созданы две базы данных a. mysite_live и b. mysite_dev.
  • Выбрал код magento из моего репо в ~/public_html/dev/(dev.mysite.com)
  • Отредактируйте начальный установщик Magento, который заполнил мой mysit_dev Db и создал некоторые файлы конфигурации (приложение/etc/local.xml - единственное, что я знаю - могут быть другие?).

Здесь, где я застрял:

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

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

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

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

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

tl; dr версия - как мне управлять Magento development & live code & Db с SVN?

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

4b9b3361

Ответ 1

Первое, что нужно сделать, это проверить установленную версию программы. Таким образом, копия программы в репо является рабочей, которую вы действительно можете использовать. Затем вам нужно будет игнорировать некоторые файлы и каталоги, чтобы вы могли запускать другие среды. 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 в среде dev и сохранение этого в репозитории.

mysqldump -u user -p database > mysqldump.sql

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

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

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

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

Спасибо, Джо

Ответ 2

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

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

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

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

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

/app/etc/modules

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

Ответ 3

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

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

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

touch maintenance.flag; sleep 2; modman update-all; rm maintenance.flag

Ответ 4

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

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

Ответ 5

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