1
resposta

Diferença entre o Bisect e o Blame

Olá,

Na aula que fala sobre o Bisect, fiquei na dúvida, se não seria mais simples encontrar o commit desejado através do comando git blame (que lista o commit que gerou cada linha de um arquivo).

Há algum caso que o blame não atenda o que o Bisect faz?

Att,

1 resposta

Oi Ademir,

os dois códigos são usados pra buscar commits, como você disse. Na maior parte das vezes que usei os dois, estava a procura de um commit que causou algum bug bem específico. Assim, vou te responder na perspectiva de alguém que está a procura de um bug.

O blame está diretamente ligado a um arquivo específico. Você sabe qual o arquivo especificamente que está gerando o bug, mas não sabe a partir de qual commit o bug foi inserido. Então você pode rodar um git blame arquivo e aí ver todos os commits que mexeram nesse arquivo.

Como você não sabe qual dos commits foi o responsável, você vai ter que que voltar um a um até achar o commit que causou o bug.

E nesse caso são pra bugs nos quais você consegue apontar o código de algum arquivo como causador.

Se você não tiver ideia de qual arquivo está gerando o bug, ou se suspeitar que um conjunto de códigos em arquivos diferentes pode estar gerando o bug, você não vai ter onde fazer um blame. Não vai ter ideia de quais commits olhar. E é aí que entra o bisect

O bisect vai te ajudar a achar o commit, sem saber necessariamente quais arquivos são os causadores. Você vai navegar por vários commits, parando a cada commit pra testar seu código e ver se o bug está lá ou não, até o momento que chegar no commit que gerou o bug. Quando achar o commit, você vai conseguir ver quais arquivos foram alterados naquele commit e provavelmente achar a fonte do bug.

PS: Essa busca pelos seus commits usando o bisect é uma busca binária. O que significa que a busca é mais otimizada e não vai ter que olhar todos os commits do seu repositório.