Я использую git для управления версиями проекта Django 1.7 + Django CMS 3.0.6.Django 1.7 + Django CMS - удалить файлы миграции из моего репо или включить virtualenv в репо?
В процессе создания различных приложений и т. Д. Я получаю много файлов миграции. Файлы миграции в настоящее время включены в мой git-репо.
До сих пор я пытался избежать включения виртуальных файлов env в свое репо прямо, поскольку это кажется довольно грязным и избыточным. Вместо этого я до сих пор включал в репозиторий файл требований к требованиям к пипсам и использовал его для воссоздания виртуального env, когда это необходимо.
Тем не менее, я недавно обнаружил, что выбор включения файлов миграции в репо требует, в частности, всех виртуальных файлов env в репо. Я говорю это потому, что при развертывании моего проекта на сервере и пытается запустить любой из команд БД (SyncDB, makemigrations или мигрировать) с помощью питона manage.py я получаю ошибку:
KeyError: u"Migration image_gallery.0001_initial dependencies reference nonexistent parent node (u'cms', u'0004_auto_20141108_1256')"
тогда такая ошибка не происходят на моей локальной машине, даже после удаления базы данных.
Я отследил источник этой ошибки до того факта, что виртуальный env на моей локальной машине имеет ссылку на «0004_auto_20141108_1256» (внутри пакета django-cms - кажется, что некоторая информация миграции cms записывается непосредственно внутри виртуального env), в то время как в производственной среде нет - поскольку производственный центр создает подробный файл требований к требованиям. Следовательно, два виртуальных envs точно не совпадают, хотя все сторонние библиотеки одинаковы. В настоящее время я не включаю в себя venv в моем git repo.
Так как я вижу это у меня есть два варианта:
1. include the virtual env in my git repo
2. drop the migration files from git
Какой вариант лучше и почему - или есть третий еще лучше?
Недостатком # 1 является ненужное раздувание. Недостатком опции № 2 является то, что она теряет историю миграции, которую, возможно, захочется сохранить.
В настоящее время я следую этому подходу - однако, как указано в моем вопросе, результирующий виртуальный env не идентичен моему локальному, поскольку миграции, выполняемые на моей локальной машине, фактически изменяют файлы в самом виртуальном env (внутри django- cms, является ли это специфическим для django cms?) * таким образом, который не был захвачен файлом требований *. Поэтому, пытаясь установить новую установку в процессе производства, я получаю ошибки при попытке настроить db из-за этого несоответствия в виртуальных envs (более подробную информацию см. В вопросе). –
Извините, должен был прочитать дважды, и написал один :). Я посмотрел проект на github, и это показалось кому-то другим подобной проблемой. Кажется, в версии 3.0 есть исправление. Я не использовал django-cms, поэтому не могу комментировать, разрешит ли он вашу проблему. https://github.com/divio/django-cms/issues/3572 – Pran
Pran: см. мой ответ, надеюсь, это поможет в этом. Проблема в моем случае на самом деле не проблема с django-cms, но проблема с конфигурацией (хотя я подозреваю, что некоторые из рекомендаций, которые я нашел в Интернете для настройки cms, могли привести к моей проблеме). –