2010-10-29 2 views
3

У меня есть сайт Django, размещенный в папке site/. Это под контролем версий. Я использую Юг для миграции схем и данных для своих приложений. Приложения для конкретных сайтов находятся в папке site/, поэтому они контролируются версиями вместе с их миграциями.Версии контролируемых южных миграций в virtualenv

Я управляю virtualenv, чтобы компоненты сторонних производителей были сухими и безопасными. Я устанавливаю пакеты через PyPI. Список установленных пакетов заморожен в файле требований.txt, поэтому они могут быть легко установлены в другой среде. Virtualenv не находится под VCS. Я думаю, что это хороший способ, если virtualenv можно легко удалить и восстановить в любое время. Если мне нужно протестировать мой сайт, например, используя другую версию интерпретатора Python, просто активируйте другой virtulalenv.

Я бы хотел использовать Юг для сторонних пакетов. Здесь возникает проблема. Сценарии миграции, хранящиеся в папке приложения, поэтому они находятся вне репозитория моего сайта. Но я хочу, чтобы скрипты миграции находились под контролем версий, поэтому я могу запускать их на разных этапах.

Я не хочу управлять версиями всего virtualenv, но сценарии миграции для сторонних приложений. Как я могу разрешить этот конфликт? Есть ли в моем сценарии какое-либо заблуждение?

ответ

1

SOUTH_MIGRATION_MODULES setting позволяет размещать модули миграции для указанных приложений везде, где вы хотите (т. Е. Внутри вашего дерева проектов).

+0

Спасибо, он решил мою проблему. –

0

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

  1. сделать поистине редкое дерево для всех пакетов, тот, который вы заканчивали перед созданием virtualenv. Затем залейте virtualenv, поместив материал в существующие папки.

  2. Соберите все миграции в отдельный репозиторий с папкой на проект/внешнюю зависимость. Проверьте это на virtualenv и создайте символические ссылки, привязанные от каждого проекта к своей папке миграции.

В любом случае, я полагаю, вы можете организовать миграции существовать как отдельный проект, так что вы можете установить его с помощью того же процессом, как вы установите все остальное (easy_install/пип/что угодно).

Смежные вопросы