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.
-
Listando o log de commits para identificar um ponto bom e outro ruim.
$ git log
-
Após identificados os commits, iniciando o git bisect
$ git bisect start HEAD a17411e98d7b5
-
Deixando o git bisect buscar o ponto de inicio da falha, com rake test:units
$ git bisect run rake test:units
-
Identificado o ponto de erro, então vamos para o git bisect
$ git bisect reset
-
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