Blame programming-guidelines/pt_BR/version-control.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="version-control" xml:lang="pt-BR">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
    <link type="guide" xref="index#general-guidelines"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Philip Withnall</name>
Packit 1470ea
      <email its:translate="no">philip.withnall@collabora.co.uk</email>
Packit 1470ea
      <years>2015</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
Packit 1470ea
Packit 1470ea
    <desc>Controle de versão de código-fonte com git</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Rafael Fontenelle</mal:name>
Packit 1470ea
      <mal:email>rafaelff@gnome.org</mal:email>
Packit 1470ea
      <mal:years>2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Controle de versão</title>
Packit 1470ea
Packit 1470ea
  <synopsis>
Packit 1470ea
    <title>Resumo</title>
Packit 1470ea
Packit 1470ea
    

git é usado para controle de versão para todos os projetos do GNOME. Essa página presume que tenha um bom conhecimento em trabalhar com git; algum material introdutório está disponível <link href="https://www.atlassian.com/git/tutorials/">aqui</link> e um <link href="https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf">folha de dica está aqui</link>.

Packit 1470ea
Packit 1470ea
    <list>
Packit 1470ea
      <item>

Faça commits atômicos e reversíveis. (<link xref="#guidelines-for-making-commits"/>)

</item>
Packit 1470ea
      <item>

Inclua toda a fundamentação nas mensagens de commit, junto com links para especificações e relatórios de erros relevantes. (<link xref="#guidelines-for-making-commits"/>)

</item>
Packit 1470ea
      <item>

Mantenha alterações grandes, como renomeações, em commits separados. (<link xref="#guidelines-for-making-commits"/>)

</item>
Packit 1470ea
      <item>

Mescle alterações de ramos de recursos por meio de rebase. (<link xref="#use-of-git"/>)

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </synopsis>
Packit 1470ea
Packit 1470ea
  <section id="use-of-git">
Packit 1470ea
    <title>Uso do Git</title>
Packit 1470ea
Packit 1470ea
    

A maioria dos repositórios do GNOME seguem essas regras:

Packit 1470ea
    <list>
Packit 1470ea
      <item>

Nenhum push forçado. Exceto para ramos com o prefixo wip/ (trabalho em progress), o histórico de commits não deve ser modificado, pois contribuidores dependem dele.

</item>
Packit 1470ea
      <item>

Faça rebase nos commits em vez de merge, para ter um histórico linear (que é mais fácil de seguir).

</item>
Packit 1470ea
      <item>

Trabalhe em ramos de recursos no git do GNOME em ramos wip/ e então aplique rebase no master e merge em fast-foward nas alterações. Também é uma boa prática adicionar seu apelido ao nome do ramo, como wip/apelido/recurso.

</item>
Packit 1470ea
      <item>

Oculte “<link href="https://sethrobertson.github.io/GitBestPractices/#sausage">fazimento de salsicha</link>” (do inglês, “sausage making”) compactando commits antes de mesclá-los.

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="guidelines-for-making-commits">
Packit 1470ea
    <title>Diretrizes para fazer commits</title>
Packit 1470ea
Packit 1470ea
    

Commits devem ser tão pequenos quanto possível, mas não menores. Cada commit deve resolver um único problema, contendo apenas alterações relacionadas àquele problema. A mensagem para cada commit deve descrever o problema, explicar o que o causa e explicar como ele foi corrigido, se isso não foi óbvio. Se o commit está associado com um relatório de erro, a URI completa para o relatório de erro deve ser colocado em uma linha dedicada na parte inferior da mensagem de commit. Similarmente, o ID para o commit do git (do <cmd>git log --oneline</cmd>) deve ser compiado para o relatório de erro uma vez que o commit tenha sido enviado, com push, de forma que seja fácil localizar um por meio do outro.

Packit 1470ea
Packit 1470ea
    

As alterações em cada commit devem ser fáceis de ler. Por exemplo, eles não devem desnecessariamente alterar espaços em branco e recuo. Alterações grandes e mecânicas, tal como renomear um arquivo ou função, devem ser colocadas em commits separados das modificações do código dentro daquele arquivo ou função, de forma que as alterações posteriores não sejam enterradas ou perdidas na anterior.

Packit 1470ea
Packit 1470ea
    

Os princípios a seguir fundamentam todos os conselhos acima:

Packit 1470ea
    <list>
Packit 1470ea
      <item>

Cada commit deve levar o repositório a partir de um estado de trabalho para outro, do contrário <link href="http://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git#Binary-Search">bissecção</link> é impossível.

</item>
Packit 1470ea
      <item>

Cada commit deve ser individualmente reversível. Se posteriormente o commit acabar sendo uma ideia ruim, <cmd>git revert ID do commit</cmd> deve levar o repositório de um estado de trabalho para outro.

</item>
Packit 1470ea
      <item>

A fundamentação de cada commit, e sua relação com recursos externos como especificações e relatórios de erro, deve estar clara de forma que aqueles commits escritos por um desenvolvedor no passado devem ainda ser entendíveis por um segundo desenvolvedor sem ter que seguir todo rastro de alterações e descobrir o que eles fazem.

</item>
Packit 1470ea
      <item>

Cada commit deve ser escrito uma vez e projetado para ser lido muitas vezes, por muitos revisores e futuros programadores.

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="merging-procedure">
Packit 1470ea
    <title>Procedimento de mesclagem</title>
Packit 1470ea
Packit 1470ea
    

Para mesclar um ramo de recursos chamado meu-ramo no master, use os seguintes comandos:

Packit 1470ea
    
Packit 1470ea
git checkout master
Packit 1470ea
git pull
Packit 1470ea
Packit 1470ea
git checkout wip/meu-ramo
Packit 1470ea
git rebase --interactive master
Packit 1470ea
# Certifique-se que o rebase funcione com sucesso; teste as alterações
Packit 1470ea
Packit 1470ea
git checkout master
Packit 1470ea
git merge wip/meu-ramo
Packit 1470ea
git push
Packit 1470ea
Packit 1470ea
# wip/meu-ramo agora pode ser excluído
Packit 1470ea
git push origin :wip/meu-ramo
Packit 1470ea
git branch -D wip/meu-ramo
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="external-links">
Packit 1470ea
    <title>Links externos</title>
Packit 1470ea
Packit 1470ea
    <list>
Packit 1470ea
      <item>

<link href="https://sethrobertson.github.io/GitBestPractices/">Melhores práticas com git</link>

</item>
Packit 1470ea
      <item>

<link href="https://help.github.com/categories/using-git/">Perguntas frequentes do git</link>

</item>
Packit 1470ea
      <item>

<link href="https://www.atlassian.com/git/tutorials/">Tutorial de git do Atlassian</link>

</item>
Packit 1470ea
      <item>

<link href="http://git-scm.com/docs/gittutorial">Tutorial oficial do git</link>

</item>
Packit 1470ea
      <item>

<link href="https://try.github.io/">Tutorial interativo de git</link>

</item>
Packit 1470ea
      <item>

<link href="http://www.git-tower.com/learn/">Tutorial git-tower</link>

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </section>
Packit 1470ea
</page>