git bisect

Preparando um material para falar sobre git, algumas técnicas e outras dicas, dentre elas resolvi demostrar o uso do git bisect, e usei como base o post do Arthur Geek. Então, resolvi fazer uma aplicação nada trivial (um blog) e em um certo ponto dos commits, forcei um erro para usar o git bisect e encontra-lo. Aproveitei para dar uma lida na documentação para pegar mais algum detalhe e me deparei com a opção “run” que automatiza a busca pelo commit ruim, usando um script ou comando que avalia o ponto de parada. Como na minha aplicação exemplo estava coberta por testes e o erro forçado era capturado, logo ficou muito mais legal. Abaixo segue resumido os passos seguidos, mas todo o console você dá uma olhada no meu gist.

  1. Listando o log de commits para identificar um ponto bom e outro ruim.

    $ git log
  2. Após identificados os commits, iniciando o git bisect

    $ git bisect start HEAD a17411e98d7b5
  3. Deixando o git bisect buscar o ponto de inicio da falha, com rake test:units

    $ git bisect run rake test:units
  4. Identificado o ponto de erro, então vamos para o git bisect

    $ git bisect reset
  5. Vamos listar o diff entre os commits com erro e anterior

    $ git diff <strong>7d91b350196ccc 0765b113edefb9</strong>

as chaves de commit acima foram abreviadas para facilitar, mas está completo no log

blog comments powered by Disqus