Рабочий процесс Pydev + Django.Локальная (тестовая) + удаленная синхронизация.Использование git с django - PullRequest
1 голос
/ 03 января 2011

Я новичок в django, и мой самый первый проект - мой блог.Интересно, как разработчики django, использующие pydev, обычно синхронизируются с сервером удаленного хостинга, обновляя свои сайты?

Я также хотел бы знать, как вы сочетаете использование git с проектом django?Должен ли я просто сделать хранилище для всего проекта?

Ответы [ 2 ]

2 голосов
/ 03 января 2011

В моей компании у нас есть полный репозиторий git для каждого проекта, включая исходные тексты Django, которые помещаются в PYTHONPATH для каждого проекта, что делает зависимость версий проекта Django зависимой.Структура папок выглядит примерно так:

/.git
/projectname/app1
/projectname/app2
/projectname/manage.py
/django-lib/django/...

Поскольку django-lib не является модулем Python, мы включаем и / и / django-lib в PYTHONPATH.Если ваш проект становится большим, вы можете рассмотреть возможность использования в своих приложениях подмодулей git .

Мы также настроили несколько серверов для поддержки разработчиков.Есть тестовый сервер, на котором запущена центральная база данных тестирования, и настройка, включающая Apache с WSGI, чтобы сделать возможным тестирование на реальном сервере, который иногда немного отличается от локального manage.py, который используют разработчики до принятия своих изменений.

На сервере тестирования обновлена ​​основная ветка нашего репозитория git.Мы создали несколько сценариев, позволяющих всем разработчикам делать это, не позволяя им войти на сервер через SSH, но это только во время предварительной версии.После выпуска этот сервер станет нашим промежуточным сервером, и мы удалим из него все сценарии, чтобы он стал таким же, как наш рабочий сервер.

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

Когда у нас есть релиз, мы помещаем его в отдельную ветку, называемую «релиз».(очевидно) и рабочий сервер будет тянуть только из той ветки.Это делается через SSH, но я не знаю, как выглядит настройка вашего сервера, поэтому я думаю, что последний шаг полностью за вами.

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

1 голос
/ 06 ноября 2011

Наиболее опытные разработчики Django используют pip (или распространяют) и virtualenv работают со всеми пакетами python, которые могут вам понадобиться для ваших проектов Django (включая сам Django).

Лично все, что я храню в своих проектах git-репозиторий - это набор отдельных списков требований, сгенерированных pip:

. ~/Dev/environs/$PROJECT_NAME/bin/activate
pip freeze > ./docs/requirements/main.list

Я вполне уверен, что большинство разработчиков django знакомы с Fabric,который я использую для:

  • оптимизации локального взаимодействия с git и,
  • отправки в наш центральный репозиторий,
  • извлечения с нашего производственного или тестового сервера
  • прикосновение к wsgi на соответствующем сервере
  • и почти любая другая задача, для которой вы можете использовать сеанс терминала ssh.

Для тех случаев, когда мне нужно выполнитьизменения в приложении elses django, чтобы оно работало или соответствовало нашим целям, я:

  • разветвляю его на github,
  • клонирую из моего раздвоенного репо
  • внести изменения
  • отправить его в мое собственное репо
  • и предоставить запросы на слияние первоначальному владельцу репо

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

...