Revisão de código com o Gerrit

From The Document Foundation Wiki
Jump to: navigation, search

Esta é a página de entrada para a ferramenta de revisão de código gerrit.libreoffice.org e como usá-la no LibreOffice.

Você também pode consultar as nossas Development/gerrit/FAQ FAQ. Se necessário, também pode dar uma olhada na documentação oficial do Gerrit.

Configurando para usar o Gerrit

(Esta seção é mantida numa página em separado)

  • Consiga seu OpenID, para login. O seu OpenID já existe, se você tiver uma conta no Google, Yahoo, Blogger, Launchpad, Flickr, Wordpress, Myspace)
  • Faça login em https://gerrit.libreoffice.org/ (com seu OpenID)
  • Você deve definir seu username desta forma: use seu nick do Freenode IRC como username na "Profile". Usuários são associados pelo username -e- sua chave ssh. Este username é referenciado como SEU_USUÁRIO_AQUI abaixo.
  • adicione os e-mails que você usa no git nas preferências em "contact information"
  • gere um par de chaves ssh para o gerrit e carregue a chave pública nas preferências (ou reutilize sua chave existente)
  • adicione as linhas seguintes no seu ${HOME}/.ssh/config (ambas as seções são identicas com excessão da linha "Host"):
Host logerrit
        IdentityFile /caminho/para/sua/chave-privada
        User SEU_USUÁRIO_AQUI (veja acIma)
        Port 29418
        HostName gerrit.libreoffice.org

Host gerrit.libreoffice.org
        IdentityFile /caminho/para/sua/chave-privada
        User SEU_USUÁRIO_AQUI (Veja acima)
        Port 29418
        HostName gerrit.libreoffice.org

Note que /caminho/para/sua/chave-privada deve incluir o nome do arquivo também. Por exemplo: ~/.ssh/id_rsa

  • teste a conexão:
./logerrit test
  • Se tiver direitos para commit no freedesktop, envie um e-mail para gerrit support com:
  1. o nome de sua conta no freedesktop
  2. o e-mail utilizado para registrar lá.
para que possamos dar acesso direto de push (bypassando a revisão) no repositório.
  • Bola pra frente! ;)


Enviando um patch para o Gerrit

(Esta seção é mantida numa página em separado)

Alternativamente, você pode considerar o "git review".


Enviando patches para revisão

Crie e envie suas modificações ao Gerrit para revisão (a documentação oficial do gerrit está aqui):

   git checkout -b <um_nome_para_um_ramo_local_a_escolha> # Cria um ramo para trabalhar à parte e vai para ele
   [Faça suas alterações no código]
   git add [...arquivos] # todos os arquivos novos _e_ os alterados
   git commit
   git push origin <um_nome_para_um_ramo_local_a_escolha>:refs/for/master

Nota: os passos git add e git commit podem ser feitos usando git gui.

Somente a última linha é especial e fará o push de todos os patches do seu ramo atual para a fila de revisão no ramo master (Ajuste adequadamente, se desejar enviar um patch para um dos ramos de release ou demais). Como contribuinte ocasional, seu patch deve conter o mesmo endereço de e-mail da sua conta no Gerrit, senão você não terá a autorização de push.

Se o push for bem sucedido, o git lhe relatará onde seu commit ficará à espera de revisão. O URL será algo como https://gerrit.libreoffice.org/#/c/229/.

É uma boa ideia manter seu ramo local com suas modificações enquanto aguarda revisão, porque, caso necessite de alterar seu patch após revisão, você pode fazê-lo facilmente. Enquanto isso, você pode voltar ao ramo master com:

   git checkout master

para trabalhar em outras modificações, bastando repetir o procedimento anterior (criar um ramo local, programar, realizar o commit e depois o push).

Revisando um patch seu

Se você seu código foi revisado, você poderá ter que reenviar uma versão melhorada. Para isto, vá para o ramo local com sua modificação, altere o código, e reenvie como emenda:

   git checkout <nome_do_ramo_local_associado_ao_patch>
   [modique os arquivos necessários]
   git add ...  # adicione qualquer coisa necessária aqui
   git commit --amend  # isto "emenda" o commit mais recente do ramo, em vez de criar outro
   git push <nome_do_ramo_local_associado_ao_patch>:refs/for/master

A mensagem de commit contém uma linha "Change-Id: ...". Graças a ela, o Gerrit saberá que se trata de uma nova versão de um patch existente.

Enviando comentários de revisão

Se quiser, você pode adicionar um novo comentário ao conjunto de patches que foi enviado. Considerando que seu número de mudança é 232 e que a nova mudança tem número 2, você pode fazer

   ssh logerrit gerrit review 232,2 -m '"atendi todos os comentários de Bjoern, mas discordo do comentário da linha 3."'

Note as aspas duplas ao redor do comentários de revisão (uma para escape ao shell, e outra para o servidor do gerrit).

Isso também pode ser feito acessando o site do Gerrit.

Enviando patch como rascunho

Se você usar

   git push origin <nome_de_um_ramo_local_a_escolha>:refs/drafts/master

em vez de

   git push origin <nome_de_um_ramo_local_a_escolha>:refs/for/master

você vai criar uma modificação em rascunho. Ela será visível apenas para você e quem quer que você tenha adicionado como revisor com o botão "Add reviewer" do Gerrit. Pode ser prático para discutir alterações que estejam em andamento.

Usando logerrit

Se deseja usar o comando logerrit, veja uma versão antiga desta seção.

Enviar patches para revisão dos submódulos dicionários, helpcontent2, traduções

Veja a página dedicada a submódulos.


Revisando patches no Gerrit por linha de comando

(Esta seção é mantida numa página separada)

Buscando patches à espera de revisão

  • ./logerrit query status:open
    
    mostrará todos os patches à espera de revisão. Veja a documentação gerrit para saber das coisas legais que você pode fazer a mais (criar scripts, etc...).

Obter um patch

  • ./logerrit cherry-pick CHANGEID
    
    sendo o CHANGEID mostrado na saída da consulta ao gerrit
  • teste e reveja o patch