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)


Setting yourself up for gerrit

Before you start: Troubleshooting help

The instructions below should be easy and quick to follow. However, if you get stuck somewhere, here is how you get help:

Register in Gerrit for first time

Gerrit uses The Document Foundation's Single-On service for authentication. Create an account there if you don't have one already (several other sites, such as this wiki, use it too). Then simply launch gerrit and click on the “Sign in” link at the top right of the page. You'll be redirected to our central authentication portal, and then back to Gerrit once authenticated.

Setting yourself up for gerrit - the easy way

If you have a checkout of libreoffice/core already, you can just run ./logerrit setup, which will try to automatically setup keys and configure ssh for you, and if it can't it will guide you through these steps: if necessary, just follow the steps.

The program will tell you to go to https://gerrit.libreoffice.org, click Register and remember your username. The program will also generate a public SSH key, print it and save it to /home/[username]/.ssh/id_rsa.pub. This key will begin with 'ssh-rsa'. You must enter this key during the registration process on the website (or add it later in SSH Public Keys under Settings in order for gerrit to work.

If ./logerrit test fails and ssh -vvv logerrit informs you about ~/.ssh/config having bad permissions, run chmod 600 config in ~/.ssh.

Detailed and nitty-gritty setup topics

Setting yourself up for gerrit - the manual way

  1. Create an account at https://gerrit.libreoffice.org
  2. You must set your username in your gerrit account settings). Users are associated by username and SSH key. This username is referred to as YOUR_USERNAME_HERE below.
  3. Generate an SSH keypair for gerrit and upload the public key in the preferences (of course you can also reuse an existing key)
  4. Add the following to your ${HOME}/.ssh/config (both sections are identical except for the "Host" line):
     Host logerrit gerrit.libreoffice.org
           IdentityFile /path/to/your/private-key
           User YOUR_USERNAME_HERE (cf. above)
           Port 29418
           HostName gerrit.libreoffice.org
    

    Note that /path/to/your/private-key must include the file name as well. For example: ~/.ssh/id_rsa

  5. Setup your git repo so that it pushes to gerrit using the SSH key:
    git config remote.origin.pushurl ssh://logerrit/core
    
  6. and you are ready to go!

Now push !

See: How to submit patches

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