Репозиторий исходного кода Django

При развертывании приложения Django в реальной производственной среде, вы почти всегда захотите использовать официальный упакованный релиз Django.

Однако, если вы хотите опробовать разрабатываемый код из предстоящего выпуска или внести свой вклад в развитие Django, вам необходимо получить клон репозитория исходного кода Django.

Этот документ рассказывает о том, как устроен репозиторий кода и как работать с ним и находить в нем нужные вещи.

Обзор высокого уровня

Репозиторий исходного кода Django использует Git для отслеживания изменений в коде с течением времени, поэтому вам понадобится копия клиента Git (программа под названием git) на вашем компьютере, и вы захотите ознакомиться с основами работы Git.

На сайте Git’а можно скачать программы для различных операционных систем. Сайт также содержит огромное количество документации.

Git-репозиторий Django расположен онлайн по адресу github.com/django/django. Он содержит полный исходный код всех релизов Django, который вы можете просматривать онлайн.

Репозиторий Git включает в себя несколько филиалов:

  • main содержит основной разрабатываемый код, который станет следующим упакованным релизом Django. Именно здесь сосредоточена основная активность разработчиков.
  • stable/A.B.x - это ветви, в которых происходит работа по подготовке релиза. Они также используются для релизов исправлений и безопасности, которые возникают по мере необходимости после первоначального выпуска функциональной версии.

Git-репозиторий также содержит tags. Это точные ревизии, на основе которых были созданы упакованные релизы Django, начиная с версии 1.0.

Ряд тегов также существует под префиксом archive/ для archived work.

Исходный код сайта Djangoproject.com можно найти на github.com/django/djangoproject.com.

Основная ветвь

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

Примечание

До марта 2021 года основное отделение называлось master.

Обратите внимание, что при этом вы получите все Django: помимо модуля верхнего уровня django, содержащего код на Python, вы также получите копию документации Django, набор тестов, скрипты для упаковки и другие различные части. Код Django будет присутствовать в вашем клоне в виде каталога с именем django.

Чтобы опробовать разрабатываемый код в собственных приложениях, поместите каталог, содержащий ваш клон, в путь импорта Python. Тогда операторы import, которые ищут Django, найдут модуль django в вашем клоне.

Если вы собираетесь работать над кодом Django (например, исправлять ошибки или разрабатывать новые возможности), вы, вероятно, можете прекратить чтение здесь и перейти к the documentation for contributing to Django, где рассказывается о предпочтительном стиле кодирования и о том, как создать и отправить патч.

Стабильные ветви

Django использует ветки для подготовки к релизам Django. Каждая основная серия релизов имеет свою стабильную ветку.

Эти ветки можно найти в репозитории как ветки stable/A.B.x и будут созданы сразу после того, как первая альфа будет помечена.

Например, сразу после того, как Django 1.5 alpha 1 был помечен, была создана ветка stable/1.5.x, и вся дальнейшая работа по подготовке кода к финальному релизу 1.5 велась в ней.

Эти ветки также обеспечивают поддержку исправлений и безопасности, как описано в Поддерживаемые версии.

Например, после выпуска Django 1.5, ветвь stable/1.5.x получает только исправления ошибок безопасности и критической стабильности, которые в итоге выпускаются как Django 1.5.1 и так далее, stable/1.4.x получает только исправления безопасности и потери данных, а stable/1.3.x больше не получает никаких обновлений.

Историческая информация

Такая политика работы с ветками stable/A.B.x была принята начиная с цикла выпуска Django 1.5.

Ранее эти ветки создавались только сразу после релизов, а работа по стабилизации происходила на ветке основного репозитория. Таким образом, никакая работа по разработке новых функций для следующего релиза Django не могла быть зафиксирована до тех пор, пока не состоялся финальный релиз.

Например, вскоре после выхода Django 1.3 была создана ветка stable/1.3.x. Официальная поддержка этого релиза закончилась, и поэтому он больше не получает прямого сопровождения от проекта Django. Однако, эта и все другие ветки с аналогичным названием продолжают существовать, и заинтересованные члены сообщества иногда используют их для неофициальной поддержки старых релизов Django.

Тэги

Каждый релиз Django помечен и подписан выпускающим.

Теги можно найти на странице tags на GitHub.

Архивные работы по разработке функций

Историческая информация

С тех пор как Django перешел на Git в 2012 году, любой может клонировать репозиторий и создавать свои собственные ветки, облегчая необходимость в официальных ветках в репозитории исходного кода.

Следующий раздел в основном полезен при изучении истории хранилища, например, если вы пытаетесь понять, как были разработаны некоторые функции.

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

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

Существует ряд тегов под префиксом archive/ для поддержания ссылки на эту и другие работы, представляющие исторический интерес.

Следующие теги под префиксом archive/attic/ ссылаются на верхушки веток, код которых в итоге стал частью самого Django:

  • boulder-oracle-sprint: Добавлена поддержка баз данных Oracle в объектно-реляционный маппер Django. Это было частью Django с релиза 1.0.
  • gis: Добавлена поддержка географических/пространственных запросов в объектно-реляционный маппер Django. Это было частью Django с релиза 1.0, как поставляемое приложение django.contrib.gis.
  • i18n: Добавлена internationalization support в Django. Это было частью Django с релиза 0.90.
  • magic-removal: Крупный рефакторинг как внутренних компонентов, так и публичных API объектно-реляционного связующего устройства Django. Он был частью Django с релиза 0.95.
  • multi-auth: Рефакторинг Django’s bundled authentication framework, который добавил поддержку authentication backends. Это было частью Django с релиза 0.95.
  • new-admin: Рефакторинг Django’s bundled administrative application. Он стал частью Django в релизе 0.91, но был заменен другим рефакторингом (см. следующий листинг) перед релизом Django 1.0.
  • newforms-admin: Второй рефакторинг прилагаемого административного приложения Django. Оно стало частью Django начиная с релиза 1.0 и лежит в основе нынешней инкарнации django.contrib.admin.
  • queryset-refactor: Рефакторинг внутренних компонентов объектно-реляционного картографа Django. Он стал частью Django начиная с релиза 1.0.
  • unicode: Рефакторинг внутренних компонентов Django для последовательного использования строк на основе Юникода в большинстве мест в Django и приложениях Django. Это стало частью Django, начиная с релиза 1.0.

Кроме того, следующие теги с префиксом archive/attic/ ссылаются на советы ветвей, которые были закрыты, но чей код так и не был слит в Django, а функции, которые они стремились реализовать, так и не были завершены:

  • full-history
  • generic-auth
  • multiple-db-support
  • per-object-permissions
  • schema-evolution
  • schema-evolution-ng
  • search-api
  • sqlalchemy

Наконец, под префиксом archive/ репозиторий содержит теги soc20XX/<project>, ссылающиеся на ветки, которые использовались студентами, работавшими над Django во время программ Google Summer of Code 2009 и 2010 годов.

Вернуться на верх