Репозиторий исходного кода Django¶
При развертывании приложения Django в реальной производственной среде, вы почти всегда захотите использовать официальный упакованный релиз Django.
Однако, если вы хотите опробовать разрабатываемый код из предстоящего выпуска или внести свой вклад в развитие Django, вам необходимо получить клон репозитория исходного кода Django.
Этот документ рассказывает о том, как устроен репозиторий кода и как работать с ним и находить в нем нужные вещи.
Обзор высокого уровня¶
Репозиторий исходного кода Django использует Git для отслеживания изменений в коде с течением времени, поэтому вам понадобится копия клиента Git (программа под названием git
) на вашем компьютере, и вы захотите ознакомиться с основами работы Git.
На сайте Git’а можно скачать программы для различных операционных систем. Сайт также содержит огромное количество документации.
Git-репозиторий Django расположен онлайн по адресу github.com/django/django. Он содержит полный исходный код всех релизов Django, который вы можете просматривать онлайн.
Репозиторий Git включает в себя несколько филиалов:
main
contains the main in-development code which will become the next packaged release of Django. This is where most development activity is focused.stable/A.B.x
- это ветви, в которых происходит работа по подготовке релиза. Они также используются для релизов исправлений и безопасности, которые возникают по мере необходимости после первоначального выпуска функциональной версии.
Git-репозиторий также содержит tags. Это точные ревизии, на основе которых были созданы упакованные релизы Django, начиная с версии 1.0.
Ряд тегов также существует под префиксом archive/
для archived work.
Исходный код сайта Djangoproject.com можно найти на github.com/django/djangoproject.com.
The main branch¶
If you’d like to try out the in-development code for the next release of Django, or if you’d like to contribute to Django by fixing bugs or developing new features, you’ll want to get the code from the main branch.
Примечание
До марта 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 году, любой может клонировать репозиторий и создавать свои собственные ветки, облегчая необходимость в официальных ветках в репозитории исходного кода.
Следующий раздел в основном полезен при изучении истории хранилища, например, если вы пытаетесь понять, как были разработаны некоторые функции.
Feature-development branches tend by their nature to be temporary. Some produce successful features which are merged back into Django’s main branch to become part of an official release, but others do not; in either case, there comes a time when the branch is no longer being actively worked on by any developer. At this point the branch is considered closed.
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 годов.