{"title":"O repositório de código-fonte do Django","version":"1.11","locale":"pt-br","docname":"internals/git","url":"/pt-br/1.11/internals/git/","canonical":"https://djangodocs.dev/pt-br/1.11/internals/git/","summary":"Quando estiver fazendo deploy de uma aplicação Django em um ambiente de produção real, você quase sempre vai querer usar uma release do Django oficial.","html":"<h1>O repositório de código-fonte do Django<a class=\"heading-anchor\" href=\"#the-django-source-code-repository\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Quando estiver fazendo deploy de uma aplicação Django em um ambiente de produção real, você quase sempre vai querer usar <a class=\"reference external\" href=\"https://www.djangoproject.com/download/\">uma release do Django oficial</a>.</p>\n<p>Entretanto, se você quiser tentar o código em desenvolvimento de uma próxima release ou contribuir para o desenvolvimento do Django, você terá que obter um clone do repositório de código-fonte do Django.</p>\n<p>Este documento cobre a maneira como o repositório de código é estruturado e como trabalhar e encontrar coisas dentro dele.</p>\n<section id=\"high-level-overview\">\n<h2>Visão de alto nível<a class=\"heading-anchor\" href=\"#high-level-overview\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O repositório de código-fonte do Django usa  <a class=\"reference external\" href=\"https://git-scm.com/\">Git</a> para rastrear mudanças no código durante o tempo, então você vai precisar de uma cópia do client do Git (um programa chamado <code class=\"docutils literal notranslate\">git</code>) no seu computador, e você quer familiarizar-se com o básico de como o Git trabalha.</p>\n<p>O website do Git oferece download para vários sistemas operacionais. O site ainda contém vastas quantias de <a class=\"reference external\" href=\"https://git-scm.com/documentation\">documentation</a>.</p>\n<p>O repositório do Django no GIt é localizado online em <a class=\"reference external\" href=\"https://github.com/django/django\">github.com/django/django</a>. Ele contém todo o código-fonte para todas as releases do Django, que você pode navegar online.</p>\n<p>O repositório Git inclui várias <a class=\"reference external\" href=\"https://github.com/django/django/branches\">branches</a>:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">master</code> contém o principal código em desenvolvimento e que se tornará a próxima versão de release do Django. Esse é o lugar onde a maior parte do atividade de desenvolvimento é realizada.</p></li>\n<li><p><code class=\"docutils literal notranslate\">stable/A.B.x</code> são branches onde o trabalho de preparação de release acontece. Elas também são usadas para correção de bugs e releases de segurança que ocorrem a depender da necessidade depois que a versão final.</p></li>\n<li><p>As branches <code class=\"docutils literal notranslate\">soc20XX/&lt;project&gt;</code> são usadas por estudantes que trabalham no Django durante os programas Google Summer of Code de 2009 e 2010.</p></li>\n<li><p>As branches <code class=\"docutils literal notranslate\">attic/&lt;project&gt;</code> são usadas para desenvolver funcionalidades maiores ou experimentais sem afetar o restando do código Django.</p></li>\n</ul>\n<p>O repositório Git que contém as <a class=\"reference external\" href=\"https://github.com/django/django/tags\">tags</a>. Essas são as revisões exatas das quais as releases do Django foram produzidas, desde a versão 1.0.</p>\n<p>O código-fonte para o website <a class=\"reference external\" href=\"https://www.djangoproject.com/\">Djangoproject.com</a> pode ser encontrado em <a class=\"reference external\" href=\"https://github.com/django/djangoproject.com\">github.com/django/djangoproject.com</a>.</p>\n</section>\n<section id=\"the-master-branch\">\n<h2>A branch master<a class=\"heading-anchor\" href=\"#the-master-branch\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Se você gostaria de testar o código em desenvolvimento da próxima versão do Django, ou se você gostaria de contribuir para o Django corrigindo bugs ou desenvolvendo novas funcionalidades, você vai querer pegar o código da master branch.</p>\n<p>Note que isso irá pegar tudo do Django: além do módulo <code class=\"docutils literal notranslate\">django</code> contendo código Python, você irá também pegar uma cópia da documentação do Django, suíte de testes, scripts e outras coisas gerais. O código Django irá ser apresentado em seu clone como um diretório chamado <code class=\"docutils literal notranslate\">django</code>.</p>\n<p>Para testar o código de desenvolvimento com suas próprias aplicações, simplesmente coloque o diretório contendo o seu clone no seu Python import path. Então os comandos <code class=\"docutils literal notranslate\">import</code> que procuram pelo Django irão encontrar o módulo <code class=\"docutils literal notranslate\">django</code> dentro do seu clone.</p>\n<p>Se você estará trabalhando no código do Django (por exemplo, para corrigir bugs ou desenvolver uma nova funcionalidade), você pode provavelmente para de ler aqui e ir para <a class=\"reference internal\" href=\"/pt-br/1.11/internals/contributing/\"><span class=\"doc\">a documentação para contribuições no Django</span></a>, que cobre coisas como o estilo preferido de código e como gerar e submeter um patch.</p>\n</section>\n<section id=\"other-branches\">\n<h2>Outras branches<a class=\"heading-anchor\" href=\"#other-branches\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O Django utiliza branches para preparar as releases do Django.</p>\n<p>No passado quando o Django era hospedado no Subversion, branches também eram usadas para o desenvolvimento de funcionalidades. Agora o Django é hospedado no Git e o desenvolvimento de novas funcionalidades é realizado em forks de voluntários, mas as branches de funcionalidade do Subversion continuam no GIt para referência histórica.</p>\n<section id=\"stable-branches\">\n<h3>Branches estáveis<a class=\"heading-anchor\" href=\"#stable-branches\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Essas branches podem ser encontradas dentro das branches <code class=\"docutils literal notranslate\">stable/A.B.x</code> e serão criadas após realização de tag da primeira versão alpha.</p>\n<p>Por exemplo, imediatamente após o tag da versão <em>Django 1.5 alpha 1</em>, a branch <code class=\"docutils literal notranslate\">stable/1.5.x</code> foi criada e todo o trabalho seguinte na preparação do código para a release final 1.5 foi feita nela.</p>\n<p>Essas branches também fornecem suporte limitado a correção de bugs para a mais recente versão disponível do Django e suporte a segurança para as duas versões mais recentes do Django.</p>\n<p>Por exemplo, depois do release do Django 1.5, a branch <code class=\"docutils literal notranslate\">stable/1.5.x</code> recebe somente correções de segurança e bugs críticos de estabilidade, que são eventualmente lançados como Django 1.5.1 e assim em diante, <code class=\"docutils literal notranslate\">stable/1.4.x</code> recebe somente correções de segurança, e <code class=\"docutils literal notranslate\">stable/1.3.x</code> não recebe mais quaisquer atualizações.</p>\n<aside class=\"admonition-historical-information admonition\" role=\"note\">\n<p class=\"admonition-title\">Informação Histórica</p>\n<p>Esta política para manipular branches <code class=\"docutils literal notranslate\">stable/A.B.x</code> foi adotada começando com o ciclo de release da versão Django 1.5.</p>\n<p>Previamente, essas branches não eram criadas até que as releases e o trabalho de estabilização ocorressem na principal branch do repositório. Portanto, trabalho em novas funcionalidades para as próximas versões do Django não eram commitadas enquanto a versão final não era concretizada.</p>\n<p>Por exemplo, pouco tempo após a release do Django 1.3 a branch <code class=\"docutils literal notranslate\">stable/1.3.x</code> foi criada. O suporte oficial para essa release expirou, e por isso ele não recebe mais manutenção direta do projeto Django. Porém, essa e todas as outras branchs nomeadas de modo similar continuaram a existir e membros da comunidade interessados ocasionalmente as usaram para fornecer suporte não oficial para as releases do Django.</p>\n</aside>\n</section>\n<section id=\"feature-development-branches\">\n<h3>Brances para o desenvolvimento de novas funcionalidades<a class=\"heading-anchor\" href=\"#feature-development-branches\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"admonition-historical-information admonition\" role=\"note\">\n<p class=\"admonition-title\">Informação Histórica</p>\n<p>Desde que o Django mudou para o Git em 2012, todos podem clocar o repositório e criar suas próprias branches. aliviando a necessidade de branches oficiais no repositório de código-fonte.</p>\n<p>A seção seguinte é mais útil se você estiver explorando o histórico do repositório, por exemplo se você está tentando entender como alguma funcionalidade foi desenvolvida.</p>\n</aside>\n<p>Branches de funcionalidades de desenvolvimento tendem por natureza a serem temporárias. Algumas produzem funcionalidades de sucesso que são reaglutinadas de volta a branch master para se tornarem parte de uma release oficial do Django, mas outras não; em qualquer dos casos existe um momento em que a branch não é mais utilizada para trabalho por ninguém. Neste ponto a branch é considerada fechada.</p>\n<p>Infelizmente, O Django costumava ser mantido com o sistema de versionamento de código Subversion, que não tem uma forma padrão de indicar isso. Como paliativo, as branches do Django que são fechadas e que não são mais mantidas são movidas dentro de <code class=\"docutils literal notranslate\">attic</code>.</p>\n<p>Para referência, segue a seguir as branches das quais o código eventualmente se tornou parte do Django em si, e não são mais mantidas separadamente:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">boulder-oracle-sprint</code>: Adicionou suporte para os bancos de dados Oracle no ORM do Django. Ela tem sido parte do Django desde a release 1.0.</p></li>\n<li><p><code class=\"docutils literal notranslate\">gis</code>: Adiciona suporte para consultas geográficas/espaciais no ORM do Django. Ela tem sido parte do Django desde a release 1.0, foi embutida na aplicação <code class=\"docutils literal notranslate\">django.contrib.gis</code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\">i18n</code>: Adiciona suporte a <a class=\"reference internal\" href=\"/pt-br/1.11/topics/i18n/\"><span class=\"doc\">internacionalização</span></a> ao Django. Ela tem sido parte  do Django desde a relase 0.90.</p></li>\n<li><p><code class=\"docutils literal notranslate\">magic-removal</code>: Uma refatoração massiva tanto da API privada quanto da API pública do ORM do Django. Ela tem sido parte do Django desde a release 0.95.</p></li>\n<li><p><code class=\"docutils literal notranslate\">multi-auth</code>: Uma refatoração do <a class=\"reference internal\" href=\"/pt-br/1.11/topics/auth/\"><span class=\"doc\">framework de autenticação embutido no Django</span></a> que adicionou suporte para <a class=\"reference internal\" href=\"/pt-br/1.11/topics/auth/customizing/#authentication-backends\"><span class=\"std std-ref\">backends de autenticação</span></a>. Ela tem sido parte do Django desde a release 0.95.</p></li>\n<li><p><code class=\"docutils literal notranslate\">new-admin</code>: Uma refatoração da <a class=\"reference internal\" href=\"/pt-br/1.11/ref/contrib/admin/\"><span class=\"doc\">aplicação administrativa embutida no Django</span></a>. Ela tem sido parte do Django desde a release 0.91, mas substituída foi por outra refatoração (veja a próxima listagem) antes da release do Django 1.0.</p></li>\n<li><p><code class=\"docutils literal notranslate\">newforms-admin</code>: A segunda refatoração da aplicação administrativa embutida no Django. Ela se tornou parte do Django na release 1.0, e é a base da encarnação atual do <code class=\"docutils literal notranslate\">django.contrib.admin</code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\">queryset-refactor</code>: Uma refatoração das entranhas do ORM do Django. Ela se tornou parte do Django na release 1.0.</p></li>\n<li><p><code class=\"docutils literal notranslate\">unicode</code>:  Uma refatoração das entranhas do Django para uso consistente de strings baseadas em Unicode e mais locais dentro do Django e de aplicações Django. Ela se tornou parte do Django na release 1.0.</p></li>\n</ul>\n<p>Quando o Django saiu do SVN para o Git, a informação sobre os merges de branches não foi preservada no repositório do código-fonte. Isto significa que a branch <code class=\"docutils literal notranslate\">master</code> do Django não contém os commits provenientes das branches abaixo.</p>\n<p>Entretanto, a informação está <a class=\"reference external\" href=\"https://github.com/ramiro/django-git-grafts\">disponível como um arquivo grafts</a>. Você pode restaurá-lo colocando as linhas seguintes no arquivo .git/info/grafts` de seu clone local:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>ac64e91a0cadc57f4bc5cd5d66955832320ca7a1 <span class=\"mi\">553</span>a20075e6991e7a60baee51ea68c8adc520d9a <span class=\"mi\">0</span>cb8e31823b2e9f05c4ae868c19f5f38e78a5f2e\n<span class=\"mf\">79e68</span>c225b926302ebb29c808dda8afa49856f5c d0f57e7c7385a112cb9e19d314352fc5ed5b0747 aa239e3e5405933af6a29dac3cf587b59a099927\n<span class=\"mi\">5</span>cf8f684237ab5addaf3549b2347c3adf107c0a7 cb45fd0ae20597306cd1f877efc99d9bd7cbee98 e27211a0deae2f1d402537f0ebb64ad4ccf6a4da\nf69cf70ed813a8cd7e1f963a14ae39103e8d5265 d5dbeaa9be359a4c794885c2e9f1b5a7e5e51fb8 d2fcbcf9d76d5bb8a661ee73dae976c74183098b\naab3a418ac9293bb4abd7670f65d930cb0426d58 <span class=\"mi\">4</span>ea7a11659b8a0ab07b0d2e847975f7324664f10 adf4b9311d5d64a2bdd58da50271c121ea22e397\nff60c5f9de3e8690d1e86f3e9e3f7248a15397c8 <span class=\"mi\">7</span>ef212af149540aa2da577a960d0d87029fd1514 <span class=\"mi\">45</span>b4288bb66a3cda401b45901e85b645674c3988\n<span class=\"mi\">9</span>dda4abee1225db7a7b195b84c915fdd141a7260 <span class=\"mi\">4</span>fe5c9b7ee09dc25921918a6dbb7605edb374bc9 <span class=\"mi\">3</span>a7c14b583621272d4ef53061287b619ce3c290d\na19ed8aea395e8e07164ff7d85bd7dff2f24edca dc375fb0f3b7fbae740e8cfcd791b8bccb8a4e66 <span class=\"mi\">42</span>ea7a5ce8aece67d16c6610a49560c1493d4653\n<span class=\"mi\">9</span>c52d56f6f8a9cdafb231adf9f4110473099c9b5 c91a30f00fd182faf8ca5c03cd7dbcf8b735b458 <span class=\"mi\">4</span>a5c5c78f2ecd4ed8859cd5ac773ff3a01bccf96\n<span class=\"mi\">953</span>badbea5a04159adbfa970f5805c0232b6a401 <span class=\"mi\">4</span>c958b15b250866b70ded7d82aa532f1e57f96ae <span class=\"mi\">5664</span>a678b29ab04cad425c15b2792f4519f43928\n<span class=\"mi\">471596</span>fc1afcb9c6258d317c619eaf5fd394e797 <span class=\"mf\">4e89105</span>d64bb9e04c409139a41e9c7aac263df4c <span class=\"mf\">3e9035</span>a9625c8a8a5e88361133e87ce455c4fc13\n<span class=\"mi\">9233</span>d0426537615e06b78d28010d17d5a66adf44 <span class=\"mf\">6632739e94</span>c6c38b4c5a86cf5c80c48ae50ac49f <span class=\"mf\">18e151</span>bc3f8a85f2766d64262902a9fcad44d937\n</code></pre></div>\n<p>Adicionalmente, as branches abaixo estão fechadas, mas os seus códigos nunca foram mesclados com o Django e as funcionalidades que elas buscavam implementar nunca foram concluídas:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">full-history</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">generic-auth</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">multiple-db-support</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">per-object-permissions</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">schema-evolution</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">schema-evolution-ng</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">search-api</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">sqlalchemy</code></p></li>\n</ul>\n<p>Todas as branches mencionadas acima agora residem em <code class=\"docutils literal notranslate\">attic</code>.</p>\n<p>Finalmente, o repositório contém as branches de funcionalidade <code class=\"docutils literal notranslate\">soc2009/xxx</code> e <code class=\"docutils literal notranslate\">soc2010/xxx</code>, usadas para os projetos Google Summer of Code.</p>\n</section>\n</section>\n<section id=\"id1\">\n<h2>Tags<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Each Django release is tagged and signed by the releaser.</p>\n<p>As <a class=\"reference external\" href=\"https://github.com/django/django/tags\">tags</a> podem ser encontradas na página do GitHub,</p>\n</section>","rootId":"the-django-source-code-repository","toc":[{"title":"Visão de alto nível","anchor":"high-level-overview","children":[]},{"title":"A branch master","anchor":"the-master-branch","children":[]},{"title":"Outras branches","anchor":"other-branches","children":[{"title":"Branches estáveis","anchor":"stable-branches","children":[]},{"title":"Brances para o desenvolvimento de novas funcionalidades","anchor":"feature-development-branches","children":[]}]},{"title":"Tags","anchor":"id1","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Funcionamento interno do Projeto Django","url":"/pt-br/1.11/internals/"}],"prev":{"docname":"internals/deprecation","title":"Linha do tempo de depreciações no Django","url":"/pt-br/1.11/internals/deprecation/"},"next":{"docname":"internals/howto-release-django","title":"Como o Django é formado?","url":"/pt-br/1.11/internals/howto-release-django/"},"formats":{"html":"/pt-br/1.11/internals/git/","markdown":"/pt-br/1.11/internals/git.md","json":"/pt-br/1.11/internals/git.json"},"source":"https://github.com/django/django/blob/stable/1.11.x/docs/internals/git.txt","official":"https://docs.djangoproject.com/pt-br/1.11/internals/git/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","fr","ja","id","pt-br","ko","es","el","pl"]}