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

11

Eu trabalho em um projeto muito grande (mais de 10000 versões) e, às vezes, é necessário saber quem dos outros usuários excluiu alguma linha de um arquivo. Existe uma maneira de fazer isso? Eu posso fazer svn blamecom o número da revisão para verificar se existe uma linha nessa revisão e, em seguida, ver em qual revisão a linha se foi e ver quem cometeu essa revisão, mas esse procedimento é insignificante para esse grande projeto.

Existe uma maneira mais inteligente de fazer isso?

Ivan Petrushev
fonte

Respostas:

5

Isso faz o que você precisa automaticamente, embora não seja muito rápido, porque não usa a 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 
Peter Brülls
fonte
5

Eu verificaria o histórico do arquivo e tentaria encontrar rapidamente uma revisão onde essa linha está presente, e depois culpar entre HEAD e essa revisão.

Se o arquivo passou por 100 revisões desde o início, se você pesquisar binariamente as revisões procurando essa linha, não precisará procurar mais de 10 revisões diferentes.

ta.speot.is
fonte
Não vejo a opinião, tudo parece um bom conselho para mim: P
Phoshi 20/04/10
11
É o mesmo que minha abordagem. Eu quero algo mais simples / rápido do que procurar em 10 revisões.
precisa saber é o seguinte
... são 10 revisões. No momento em que você postou a pergunta acima, você já deveria ter feito. A menos que isso seja algo que você terá que fazer novamente, caso em que desconsidere meus comentários.
ta.speot.is
2
Sim, é excelente para um único disparo, mas preciso de algo que possa ser usado frequentemente regularmente.
precisa
2

svn log --diffidentificará exclusões com "-" na coluna zero. Grep for "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") {

Também existe, svn log --searchmas isso somente pesquisará a mensagem de confirmação.

Robert Calhoun
fonte