Преимущества хранения Django с кодом приложения в системе контроля версий - PullRequest
5 голосов
/ 26 февраля 2011

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

Имеет ли смысл хранить Django в нашей VCS? В идеале это упростит мне процесс развертывания, и я буду управлять любыми изменениями модели, которые Django вносит во встроенные приложения (django.contrib.auth, django.contrib.sites и т. Д.), Используя South.

Есть ли причины, по которым я не должен этого делать? Что вы делаете для своих приложений?

Ответы [ 2 ]

4 голосов
/ 26 февраля 2011

Я не думаю, что вы многого выиграете, если сохраните Django в системе контроля версий, если вы не используете модифицированную версию Django.Похоже, вы работаете с другими разработчиками, поэтому определенно сохраняйте код, над которым вы работаете, в некоторых VCS (даже при работе в одиночку есть множество преимуществ).

Для развертывания приложения вы можете найти, что его стоит собратьпакет distutils, который может указывать его зависимости (например, конкретная версия Django).Использование virtualenv поможет отслеживать зависимости.

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

Еще одна вещь, которую я думаю стоит сделать при выпуске в производственную систему, - это создание нового каталога для каждого экспорта кода, который включает в себя:номер выпуска, затем укажите символическую ссылку, указывающую на активную версию.Это позволяет вам легко вернуться к предыдущей версии.Юг, который вы упомянули, также очень полезен для этого.

4 голосов
/ 26 февраля 2011

Я бы абсолютно все хранил в вашей VCS. Хотите обновить Django? Хотите добавить плагин? Синхронизация этого между несколькими разработчиками и различными средами может стать кошмаром. Не берите в голову отладку, если версии не синхронизированы. Что произойдет, если у вас есть несколько приложений django, над которыми вам нужно работать, и они разных версий?

Возможно, вы захотите взглянуть на следующие две статьи:

Я храню все из каталога, который virtualenv создает в SVN. Мой сценарий развертывания в основном состоит из следующего:

  • Оформить заказ (только сначала, а затем обновить) в папку на сервере
  • rsync в каталог, из которого Apache обслуживает файлы (кроме папок .svn)
  • Установка паролей базы данных и разрешений для этой среды
  • Перезапустить пассажира
  • Запишите номер редакции в текстовый файл из рабочей копии в каталог развертывания (может пригодиться позже!)
...