Como encontrar quem deletou uma linha de um arquivo em um repositório SVN?

9

Eu trabalho em um projeto muito grande (10000 + versões) e às vezes aconteceu que eu preciso saber quem dos outros usuários apagou alguma linha em um arquivo. Existe uma maneira de fazer isso? Eu posso fazer svn blame com o número de revisão para verificar se existe uma linha nessa revisão, então ver em qual revisão a linha sumiu e ver quem cometeu essa revisão, mas esse procedimento é coxo com aquele grande projeto.

Existe uma maneira mais inteligente de fazer isso?

    
por Ivan Petrushev 20.04.2010 / 12:00

3 respostas

5

Isso faz o que você precisa automaticamente, embora não seja muito rápido, porque não usa pesquisa binária como sugerido acima:

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 
    
por 31.05.2011 / 15:52
5

Eu verificaria o histórico do arquivo e tentaria encontrar rapidamente uma revisão em que essa linha estivesse presente e, em seguida, culparia entre HEAD e essa revisão.

Se o arquivo passou por 100 revisões desde o início, então, se você pesquisar binário por meio de revisões procurando por essa linha, não deverá procurar mais de 10 revisões diferentes.

    
por 20.04.2010 / 12:35
1

svn log --diff identificará exclusões com "-" na coluna zero. Grep para "r" também para que você possa ver a revisão.

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

Há também svn log --search , mas só pesquisará a mensagem de confirmação.

    
por 28.07.2017 / 23:14

Tags