Encontrei recentemente uma postagem de 29/04/2013 em um grupo de discussão do BSD em
http://openbsd-archive.7691.n7.nabble.com/Why-does-OpenBSD-use-CVS-td226952.html
onde o cartaz afirma:
Eu tive uma colisão de hash uma vez, usando o git rebase.
Infelizmente, ele não fornece provas para sua reivindicação. Mas talvez você queira tentar entrar em contato com ele e perguntar sobre esse suposto incidente.
Porém, em um nível mais geral, devido ao ataque de aniversário, a chance de uma colisão de hash SHA-1 é de 1 em pow (2, 80).
Isso soa muito e certamente é muito mais do que o número total de versões de arquivos individuais presentes em todos os repositórios Git do mundo juntos.
No entanto, isso se aplica apenas às versões que realmente permanecem no histórico de versões.
Se um desenvolvedor depende muito de rebasing, toda vez que uma rebase é executada para uma ramificação, todas as confirmações em todas as versões dessa ramificação (ou parte rebastada da ramificação) recebem novos hashes. O mesmo vale para todos os arquivos modificados com "git filter-branch". Portanto, "rebase" e "ramificação de filtro" podem ser grandes multiplicadores para o número de hashes gerados ao longo do tempo, mesmo que nem todos sejam realmente mantidos: Freqüentemente, após a rebasagem (especialmente com a finalidade de "limpar" uma ramificação ), o ramo original é jogado fora.
Mas se a colisão ocorrer durante o rebase ou a ramificação do filtro, ainda poderá ter efeitos adversos.
Outra coisa seria estimar o número total de entidades com hash nos repositórios git e ver a que distância estão do pow (2, 80).
Digamos que temos cerca de 8 bilhões de pessoas, e todas elas executariam o git e manteriam suas versões em repositórios de 100 git por pessoa. Vamos assumir ainda que o repositório médio possui 100 confirmações e 10 arquivos, e apenas um desses arquivos é alterado por confirmação.
Para cada revisão, temos pelo menos um hash para o objeto em árvore e o próprio objeto de confirmação. Juntamente com o arquivo alterado, temos 3 hashes por revisão e, portanto, 300 hashes por repositório.
Para 100 repositórios de 8 bilhões de pessoas, isso gera pow (2, 47), que ainda está longe de pow (2, 80).
No entanto, isso não inclui o suposto efeito de multiplicação mencionado acima, porque não sei como incluí-lo nessa estimativa. Talvez isso possa aumentar consideravelmente as chances de uma colisão. Especialmente se repositórios muito grandes, com um histórico de consolidação longo (como o Linux Kernel), são reprovados por muitas pessoas para pequenas alterações, que, no entanto, criam hashes diferentes para todos os commit afetados.
I've been informed by the git Gods that the chances of a SHA1 collision is the same as the Earth being sucked up into the black hole created by the CERN accelerator. If this is indeed true, then there's no need for that extra memcmp.
, fonte: lwn.net/Articles/307281