Localizar commits pelo nome de usuário, descrição do commit e outras informações.

Sintaxe básica

svn log --search "$TERMO_DE_BUSCA" $repo

NOTA

$repo pode ser uma pasta local ou um endereço http remoto

Exemplos

Buscar em todos os repositórios

Dependendo do tamanho do repositório pode ser um pouco lento.

TERMO_DE_BUSCA="7168181"; \
RAIZ="http://meusvn.com.br"; \
REPOS="\
$RAIZ/app-bob \
$RAIZ/app-tom \
$RAIZ/app-ana \
"; \
for repo in $REPOS; do \
  echo ">>>>> $repo <<<<<"; \
  svn log --search "$TERMO_DE_BUSCA" $repo; \
done | grep -P --color "(^>>>>>.*|$TERMO_DE_BUSCA|$)"

Buscar em todos os repositórios (otimizado)

A busca vai parar na primeira ocorrência de cada repositório. Bom para saber apenas em qual repositório houve commit.

TERMO_DE_BUSCA="7168181"; \
RAIZ="http://meusvn.com.br"; \
REPOS="\
$RAIZ/app-bob \
$RAIZ/app-tom \
$RAIZ/app-ana \
"; \
for repo in $REPOS; do \
  echo ">>>>> $repo <<<<<"; \
  svn log --search "$TERMO_DE_BUSCA" $repo \
  | grep -P -m 1 "$TERMO_DE_BUSCA"; \
done | grep -P --color "(^>>>>>.*|$TERMO_DE_BUSCA|$)"

Otimizando ainda mais

Bom para repositórios muito grandes ou apenas para delimitar um período no tempo.

Setar a data inicial e final na busca. Adicionar imediatamente antes do --search a data início e data fim, no formato abaixo:

  • -r HEAD:{2019-06-01}; ou
  • -r {2019-08-05}:{2019-06-01}

Exemplo:

# ex 1
svn log -r HEAD:{2019-06-01} --search "$TERMO_DE_BUSCA" $repo
# ex 2
svn log -r {2019-08-05}:{2019-06-01} --search "$TERMO_DE_BUSCA" $repo