{"title":"O repositório de código-fonte do Django","version":"2.0","locale":"pt-br","docname":"internals/git","url":"/pt-br/2.0/internals/git/","canonical":"https://djangodocs.dev/pt-br/2.0/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 . Entretanto,…","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\"><span class=\"pre\">git</span></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\"><span class=\"pre\">master</span></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\"><span class=\"pre\">stable/A.B.x</span></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\"><span class=\"pre\">soc20XX/&lt;project&gt;</span></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\"><span class=\"pre\">attic/&lt;project&gt;</span></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\"><span class=\"pre\">django</span></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\"><span class=\"pre\">django</span></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\"><span class=\"pre\">import</span></code> que procuram pelo Django irão encontrar o módulo <code class=\"docutils literal notranslate\"><span class=\"pre\">django</span></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/2.0/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\"><span class=\"pre\">stable/A.B.x</span></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\"><span class=\"pre\">stable/1.5.x</span></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\"><span class=\"pre\">stable/1.5.x</span></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\"><span class=\"pre\">stable/1.4.x</span></code> recebe somente correções de segurança, e <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/1.3.x</span></code> não recebe mais quaisquer atualizações.</p>\n<aside class=\"admonition-historical-information admonition\">\n<p class=\"admonition-title\">Informação Histórica</p>\n<p>Esta política para manipular branches <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B.x</span></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\"><span class=\"pre\">stable/1.3.x</span></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\">\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\"><span class=\"pre\">attic</span></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\"><span class=\"pre\">boulder-oracle-sprint</span></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\"><span class=\"pre\">gis</span></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\"><span class=\"pre\">django.contrib.gis</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">i18n</span></code>: Adiciona suporte a <a class=\"reference internal\" href=\"/pt-br/2.0/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\"><span class=\"pre\">magic-removal</span></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\"><span class=\"pre\">multi-auth</span></code>: Uma refatoração do <a class=\"reference internal\" href=\"/pt-br/2.0/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/2.0/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\"><span class=\"pre\">new-admin</span></code>: Uma refatoração da <a class=\"reference internal\" href=\"/pt-br/2.0/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\"><span class=\"pre\">newforms-admin</span></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\"><span class=\"pre\">django.contrib.admin</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">queryset-refactor</span></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\"><span class=\"pre\">unicode</span></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\"><span class=\"pre\">master</span></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><span class=\"n\">ac64e91a0cadc57f4bc5cd5d66955832320ca7a1</span> <span class=\"mi\">553</span><span class=\"n\">a20075e6991e7a60baee51ea68c8adc520d9a</span> <span class=\"mi\">0</span><span class=\"n\">cb8e31823b2e9f05c4ae868c19f5f38e78a5f2e</span>\n<span class=\"mf\">79e68</span><span class=\"n\">c225b926302ebb29c808dda8afa49856f5c</span> <span class=\"n\">d0f57e7c7385a112cb9e19d314352fc5ed5b0747</span> <span class=\"n\">aa239e3e5405933af6a29dac3cf587b59a099927</span>\n<span class=\"mi\">5</span><span class=\"n\">cf8f684237ab5addaf3549b2347c3adf107c0a7</span> <span class=\"n\">cb45fd0ae20597306cd1f877efc99d9bd7cbee98</span> <span class=\"n\">e27211a0deae2f1d402537f0ebb64ad4ccf6a4da</span>\n<span class=\"n\">f69cf70ed813a8cd7e1f963a14ae39103e8d5265</span> <span class=\"n\">d5dbeaa9be359a4c794885c2e9f1b5a7e5e51fb8</span> <span class=\"n\">d2fcbcf9d76d5bb8a661ee73dae976c74183098b</span>\n<span class=\"n\">aab3a418ac9293bb4abd7670f65d930cb0426d58</span> <span class=\"mi\">4</span><span class=\"n\">ea7a11659b8a0ab07b0d2e847975f7324664f10</span> <span class=\"n\">adf4b9311d5d64a2bdd58da50271c121ea22e397</span>\n<span class=\"n\">ff60c5f9de3e8690d1e86f3e9e3f7248a15397c8</span> <span class=\"mi\">7</span><span class=\"n\">ef212af149540aa2da577a960d0d87029fd1514</span> <span class=\"mi\">45</span><span class=\"n\">b4288bb66a3cda401b45901e85b645674c3988</span>\n<span class=\"mi\">9</span><span class=\"n\">dda4abee1225db7a7b195b84c915fdd141a7260</span> <span class=\"mi\">4</span><span class=\"n\">fe5c9b7ee09dc25921918a6dbb7605edb374bc9</span> <span class=\"mi\">3</span><span class=\"n\">a7c14b583621272d4ef53061287b619ce3c290d</span>\n<span class=\"n\">a19ed8aea395e8e07164ff7d85bd7dff2f24edca</span> <span class=\"n\">dc375fb0f3b7fbae740e8cfcd791b8bccb8a4e66</span> <span class=\"mi\">42</span><span class=\"n\">ea7a5ce8aece67d16c6610a49560c1493d4653</span>\n<span class=\"mi\">9</span><span class=\"n\">c52d56f6f8a9cdafb231adf9f4110473099c9b5</span> <span class=\"n\">c91a30f00fd182faf8ca5c03cd7dbcf8b735b458</span> <span class=\"mi\">4</span><span class=\"n\">a5c5c78f2ecd4ed8859cd5ac773ff3a01bccf96</span>\n<span class=\"mi\">953</span><span class=\"n\">badbea5a04159adbfa970f5805c0232b6a401</span> <span class=\"mi\">4</span><span class=\"n\">c958b15b250866b70ded7d82aa532f1e57f96ae</span> <span class=\"mi\">5664</span><span class=\"n\">a678b29ab04cad425c15b2792f4519f43928</span>\n<span class=\"mi\">471596</span><span class=\"n\">fc1afcb9c6258d317c619eaf5fd394e797</span> <span class=\"mf\">4e89105</span><span class=\"n\">d64bb9e04c409139a41e9c7aac263df4c</span> <span class=\"mf\">3e9035</span><span class=\"n\">a9625c8a8a5e88361133e87ce455c4fc13</span>\n<span class=\"mi\">9233</span><span class=\"n\">d0426537615e06b78d28010d17d5a66adf44</span> <span class=\"mf\">6632739e94</span><span class=\"n\">c6c38b4c5a86cf5c80c48ae50ac49f</span> <span class=\"mf\">18e151</span><span class=\"n\">bc3f8a85f2766d64262902a9fcad44d937</span>\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\"><span class=\"pre\">full-history</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">generic-auth</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">multiple-db-support</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">per-object-permissions</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">schema-evolution</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">schema-evolution-ng</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">search-api</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sqlalchemy</span></code></p></li>\n</ul>\n<p>Todas as branches mencionadas acima agora residem em <code class=\"docutils literal notranslate\"><span class=\"pre\">attic</span></code>.</p>\n<p>Finalmente, o repositório contém as branches de funcionalidade <code class=\"docutils literal notranslate\"><span class=\"pre\">soc2009/xxx</span></code> e <code class=\"docutils literal notranslate\"><span class=\"pre\">soc2010/xxx</span></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/2.0/internals/"}],"prev":{"docname":"internals/deprecation","title":"Linha do tempo de depreciações no Django","url":"/pt-br/2.0/internals/deprecation/"},"next":{"docname":"internals/howto-release-django","title":"Como o Django é formado?","url":"/pt-br/2.0/internals/howto-release-django/"},"formats":{"html":"/pt-br/2.0/internals/git/","markdown":"/pt-br/2.0/internals/git.md","json":"/pt-br/2.0/internals/git.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/internals/git.txt","official":"https://docs.djangoproject.com/pt-br/2.0/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","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}