Existe uma maneira de executar uma pesquisa de texto completo de um repositório do subversion, incluindo todo o histórico?
Por exemplo, eu escrevi um recurso que usei em algum lugar, mas ele não era necessário, então eu rmmdm os arquivos, mas agora preciso encontrá-lo novamente para usá-lo para outra coisa. O svn log provavelmente diz algo como "coisas não utilizadas removidas", e há um monte de checkins assim.
Editar 15-04-2016: Observe que o que é solicitado aqui pelo termo "pesquisa de texto completo" é pesquisar as diferenças reais do histórico de confirmação, e não os nomes de arquivos e / ou mensagens de confirmação . Estou apontando isso porque o fraseado do autor acima não reflete muito bem - pois no exemplo dele, ele pode estar procurando apenas um nome de arquivo e / ou mensagem de confirmação. Daí muitas svn log
respostas e comentários.
fonte
--search
argumento parasvn log
comando. Veja a minha resposta em stackoverflow.com/a/17473516/761095svn log --search
não realiza uma pesquisa de texto completo conforme exigido por @rjmunro, mas apenas pesquisa autor, data, mensagem de log e lista de caminhos alterados.Respostas:
fonte
apt-get install git-svn
.svn log
no Apache Subversion 1.8 suporta uma nova--search
opção . Assim, você pode pesquisar as mensagens de log do histórico do repositório do Subversion sem usar ferramentas e scripts de terceiros.svn log --search
pesquisa no autor, data, texto da mensagem de log e lista de caminhos alterados.Veja SVNBook |
svn log
referência de linha de comando .fonte
Se você estiver executando o Windows, consulte o SvnQuery . Ele mantém um índice de texto completo de repositórios locais ou remotos. Todo documento já confirmado em um repositório é indexado. Você pode fazer consultas semelhantes ao google a partir de uma interface web simples.
fonte
Estou usando um shellscript pequeno, mas isso funciona apenas para um único arquivo. É claro que você pode combinar isso com o find para incluir mais arquivos.
Se você realmente deseja pesquisar tudo, use o
svnadmin dump
comando e grep através dele.fonte
A melhor maneira que encontrei para fazer isso é com menos:
Uma vez menos, você pode pressionar
/
para pesquisar, como o VIM.Editar:
Segundo o autor, ele deseja pesquisar mais do que apenas as mensagens e os nomes dos arquivos. Nesse caso, você será solicitado a invadir o gueto com algo como:
Você também pode substituir
grep
ou outra coisa para fazer a pesquisa por você. Se você deseja usá-lo em um subdiretório do repositório, será necessáriosvn log
discernir a primeira revisão na qual esse diretório existia e usar essa revisão em vez de0
.fonte
Eu tenho procurado algo semelhante. O melhor que eu criei é o OpenGrok . Ainda não tentei implementá-lo, mas parece promissor.
fonte
para diff você pode usar a
--diff
opçãouse o vim ou o nano ou o que você quiser e faça uma pesquisa pelo que está procurando. Você o encontrará rapidamente.
Não é um script sofisticado ou qualquer coisa automatizada. Mas funciona.
fonte
Embora não seja de graça, você pode dar uma olhada no Fisheye da Atlassian, o mesmo pessoal que o traz para o JIRA. Faz pesquisa de texto completo no SVN com muitos outros recursos úteis.
http://www.atlassian.com/software/fisheye/
fonte
Eu estava procurando a mesma coisa e encontrei o seguinte:
http://svn-search.sourceforge.net/
fonte
Acabei de encontrar este problema e
fez o trabalho para mim. Retornou a revisão da primeira ocorrência e citou a linha que eu estava procurando.
fonte
Não tenho nenhuma experiência com isso, mas o SupoSE (código aberto, escrito em Java) é uma ferramenta projetada para fazer exatamente isso.
fonte
svn log -l<commit limit> | grep -C<5 or more lines> <search message>
fonte
Eu costumo fazer o que Jack M diz (use svn log --verbose), mas faço pipe para grep em vez de menos.
fonte
less
você pode ver a revisão, a data etc., em vez de apenas a linha do comentário. Isso é geralmente o que estou procurando de qualquer maneira.Eu escrevi isso como um script de cygwin bash para resolver esse problema.
No entanto, exige que o termo de pesquisa esteja atualmente no arquivo do sistema de arquivos. Para todos os arquivos que correspondem ao grep do sistema de arquivos, um grep de todas as diferenças svn para esse arquivo é executado. Não é perfeito, mas deve ser bom o suficiente para a maioria dos usos. Espero que isto ajude.
/ usr / local / bin / svngrep
/ usr / local / bin / svnrevisions
fonte
Caso esteja tentando determinar qual revisão é responsável por uma linha de código específica, provavelmente você está procurando:
Crédito: resposta original
fonte
Me deparei com esse script bash , mas ainda não tentei.
fonte