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