Como posso localizar todos os repositórios do subversion no meu sistema?

3

Eu posso usar este comando locate --regex '/.git$' | grep username para localizar todos os repositórios git no meu sistema, mas como .svn aparece nos subdiretórios dos repositórios, o comando locate --regex '/.svn$' | grep username também funciona.

O primeiro produziu cerca de 120 e o último, mais de 14.000.

Qual nome de arquivo ou diretório devo pesquisar para localizar repositórios subversos?

    
por vfclists 07.05.2017 / 14:53

1 resposta

3

No Git, cada cópia de trabalho é seu próprio repositório. Este não é o caso do SVN. Então, se você realmente quer encontrar repositórios , e eles estão no local padrão e na máquina local, isso é suficiente:

ls /var/svn

Supondo que você realmente queira encontrar cópias de trabalho , o SVN desde a versão 1.7 coloca apenas .svn arquivos no nível superior de uma cópia de trabalho, portanto o comando

find / -type d -name '.svn'

funcionaria muito bem. Alternativamente, se você usou o SVN anterior e tem esses diretórios espalhados por toda parte, você pode tentar:

find / -type d -name '.svn' -exec dirname {} \; \
| sort \
| awk 'NR == 1 || $0 !~ "^"LAST { LAST = $0; print}'

Isso lista todos os diretórios que contêm subdiretórios .svn e, em seguida, imprime somente aqueles que não contêm outro como prefixo.

Eu encontrei um computador contendo locate , onde

$ locate --version
mlocate 0.26
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
This software is distributed under the GPL v.2.

This program is provided with NO WARRANTY, to the extent permitted by law.

Neste sistema, uma abordagem semelhante ao exemplo final find :

locate -r '/\.svn$' \
| sed 's/^\(.*\)$/""/' \
| xargs dirname \
| sort \
| awk 'NR == 1 || $0 !~ "^"LAST { LAST = $0; print }'
    
por 07.05.2017 / 17:11