---
title: "Django 소스 코드 저장소"
version: 6.0
locale: ko
source: https://docs.djangoproject.com/ko/6.0/internals/git/
canonical: https://djangodocs.dev/ko/6.0/internals/git/
---
# Django 소스 코드 저장소

Django 애플리케이션을 실제 프로덕션 환경에 배포할 때는 거의 항상 공식 패키지 릴리스로 제공되는 Django\`\_를 사용하는 것이 좋습니다.

그러나 다가오는 릴리스의 개발 중인 코드를 사용해 보거나 Django 개발에 기여하고 싶다면, Django 소스 코드 저장소를 복제하여 사용해야 합니다.

이 문서는 코드 저장소의 구성 방식과 그 안에서 내용을 찾고 작업하는 방법을 다룹니다.

## 전반적인 개요

Django 소스 코드 저장소는 코드 변경 사항을 추적하기 위해 Git\`\_을 사용합니다. 따라서 컴퓨터에 Git 클라이언트(git\`\`이라는 프로그램)를 설치하고, Git의 기본적인 사용 방법에 익숙해져야 합니다.

Git 웹사이트에서는 다양한 운영체제용 다운로드 파일을 제공합니다. 또한 방대한 양의 documentation\`\_확인할 수 있습니다.

Django Git 저장소는 github.com/django/django \<<https://github.com/django/django>\>\`\_에서 온라인으로 확인할 수 있습니다. 이 저장소에는 모든 Django 릴리스의 전체 소스 코드가 포함되어 있으며, 온라인으로 둘러볼 수 있습니다.

Git 저장소에는 다음과 같은 여러 branches\`\_가 포함되어 있습니다.

- `main` 브랜치에는 현재 개발 중인 주요 코드가 포함되어 있으며, 이는 Django의 다음 패키지 릴리스가 됩니다. 이 브랜치에서 대부분의 개발 활동이 이루어집니다.
- stable/A.B.x\`\`는 릴리스 준비 작업이 이루어지는 브랜치입니다. 기능 버전의 초기 릴리스 이후 필요에 따라 수행되는 버그 수정 및 보안 릴리스에도 사용됩니다.

Git 저장소에는 tags\`\_도 포함되어 있습니다. 이는 Django 1.0 버전부터 패키지된 릴리스가 생성된 정확한 리비전을 나타냅니다.

일부 태그는 archived work\<archived-feature-development-work\>\`를 위해 \`\`archive/\` 접두사를 가진 형태로 존재합니다.

[Djangoproject.com](https://www.djangoproject.com/) 웹사이트의 소스 코드는 github.com/django/djangoproject.com \<<https://github.com/django/djangoproject.com>\>\`\_에서 확인할 수 있습니다.

## 메인 브랜치

Django의 다음 릴리스에 포함될 개발 중인 코드를 사용해 보거나, 버그 수정이나 새로운 기능 개발을 통해 Django에 기여하고 싶다면 메인 브랜치에서 코드를 가져오는 것이 좋습니다.

> **Note**
>
> 2021년 3월 이전에는 메인 브랜치의 이름이 master\`\`였습니다.

이 작업을 수행하면 Django 전체\*를 가져올 수 있습니다. Python 코드가 포함된 최상위 `django` 모듈뿐만 아니라 Django의 문서, 테스트 스위트, 패키징 스크립트 및 기타 파일도 함께 포함됩니다. Django의 코드는 복제본 내의 django\`\`라는 디렉토리에 위치합니다.

자신의 애플리케이션에서 개발 중인 코드를 사용해 보려면 복제본이 포함된 디렉토리를 Python의 import 경로에 추가하세요. 그러면 Django를 찾는 `import` 문은 복제본 내의 `django` 모듈을 사용하게 됩니다.

Django의 코드를 작업하려는 경우(예를 들어 버그를 수정하거나 새로운 기능을 개발하는 경우), 여기까지만 읽고 :doc:the documentation for contributing to Django \</internals/contributing/index\>\`로 넘어가시면 됩니다. 이 문서에서는 선호하는 코딩 스타일과 패치를 생성하고 제출하는 방법 등을 다룹니다.

## 안정 브랜치

Django는 릴리스 준비를 위해 브랜치를 사용합니다. 각 주요 릴리스 시리즈에는 각각의 안정 브랜치가 있습니다.

이러한 브랜치는 저장소에서 stable/A.B.x\`\`브랜치로 확인할 수 있으며, 첫 번째 alpha 태그가 지정된 직후 생성됩니다.

예를 들어 *Django 1.5 alpha 1* 태그가 지정된 직후 `stable/1.5.x` 브랜치가 생성되었으며, 이후 최종 1.5 릴리스를 위한 코드 준비 작업은 모두 이 브랜치에서 이루어졌습니다.

이러한 브랜치는 :ref:supported-versions-policy\`에 설명된 대로 버그 수정 및 보안 지원도 제공합니다.

예를 들어 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 릴리스는 릴리스 담당자가 태그를 지정하고 서명합니다.

태그는 GitHub의 [tags](https://github.com/django/django/tags) 페이지에서 확인할 수 있습니다.

### 보관된 기능 개발 작업

> **과거 정보**
>
> Django가 2012년에 Git으로 전환된 이후, 누구나 저장소를 복제하고 자신의 브랜치를 만들 수 있게 되었으며, 이에 따라 소스 코드 저장소에서 공식 브랜치의 필요성이 줄어들었습니다.
>
> 다음 섹션은 저장소의 이력을 살펴볼 때, 예를 들어 일부 기능이 어떻게 설계되었는지 이해하려는 경우에 유용합니다.

기능 개발 브랜치는 그 특성상 일시적으로 유지되는 경우가 많습니다. 일부는 성공적으로 개발되어 Django의 주요 브랜치에 병합되어 공식 릴리스의 일부가 되지만, 그렇지 않은 경우도 있습니다. 어느 쪽이든 시간이 지나면 더 이상 어떤 개발자도 해당 브랜치를 활발히 작업하지 않게 됩니다. 이 시점에서 해당 브랜치는 종료된 것으로 간주됩니다.

Django는 과거에 Subversion 형상 관리 시스템을 사용해 유지관리되었습니다. 그러나 이 시스템에는 이를 표시하는 표준적인 방법이 없었습니다. 이에 대한 대안으로, 종료되어 더 이상 유지관리되지 않는 Django 브랜치는 attic\`\`으로 이동되었습니다.

`archive/` 접두어 아래에는 이러한 작업과 과거에 참고할 가치가 있는 다른 작업을 유지하기 위한 여러 태그가 존재합니다.

`archive/attic/` 접두어 아래의 다음 태그는 코드가 결국 Django 자체에 포함된 브랜치의 최신 상태를 가리킵니다.

- `boulder-oracle-sprint`: Oracle 데이터베이스 지원을 Django의 객체 관계 매퍼(ORM)에 추가했습니다. 이는 Django 1.0부터 포함되었습니다.
- `gis`: 지리/공간 쿼리 지원을 Django의 객체 관계 매퍼(ORM)에 추가했습니다. 이는 Django 1.0부터 `django.contrib.gis` 번들 애플리케이션으로 제공되었습니다.
- `i18n`: Django에 :doc:국제화 지원 \</topics/i18n/index\>\`을 추가했습니다. 이는 Django 0.90 릴리스부터 포함되었습니다.
- `magic-removal`: Django 객체 관계 매퍼의 내부 구조와 공개 API 전반에 대한 대규모 리팩토링입니다. 이는 Django 0.95 릴리스부터 포함되었습니다.
- `multi-auth`: Django’s bundled authentication framework 지원을 추가했습니다. 이는 Django 0.95 릴리스부터 포함되었습니다.
- `new-admin`: :doc:Django’s bundled administrative application \</ref/contrib/admin/index\>\`에 대한 리팩토링입니다. 이는 Django 0.91 릴리스부터 포함되었지만, Django 1.0 릴리스 이전에 다른 리팩토링으로 대체되었습니다(다음 목록 참고).
- `newforms-admin`: DDjango의 번들 관리 애플리케이션에 대한 두 번째 리팩토링입니다. 이는 Django 1.0 릴리스부터 포함되었으며, 현재 django.contrib.admin\`\`의 기반이 되는 구조입니다.
- `queryset-refactor`: Django 객체 관계 매퍼의 내부 구조에 대한 리팩토링입니다. 이는 Django 1.0 릴리스부터 포함되었습니다.
- `unicode`: Django와 Django 애플리케이션 전반에서 Unicode 기반 문자열을 일관되게 사용하도록 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/` 접두어 아래에는 2009년과 2010년 Google Summer of Code 프로그램에 참여한 학생들이 Django에서 작업하며 사용했던 브랜치의 최신 상태를 가리키는 `soc20XX/<project>` 태그가 포함되어 있습니다.
