Fazer backup de repositórios SVN remotos

Tínhamos uma instância svnserve antiga com repositórios que haviam sido quase todos abandonados desde que mudamos para o git. Na preparação para encerrar as coisas, eu queria fazer backup desses repositórios localmente de uma forma que nos permitisse restaurá-los nas raras ocasiões em que fosse necessário. Aqui está uma receita que usa uma combinação de bash, svnsync e svnadmin para despejar todas as revisões de cada repositório remoto em arquivos svndump em sua máquina local.

Passo 1

Salve o seguinte script como svnbackup.sh:

#!/bin/sh
echo
"Backing up repo: $1"
svnadmin create $1

echo
"#!/bin/shnexit 0" >> `pwd`/$1/hooks/pre-revprop-change
chmod
+x `pwd`/$1/hooks/pre-revprop-change
svnsync init file
://`pwd`/$1 svn://SOURCEURL/$1 --source-username=USERNAME --source-password=PASSWORD
svnsync sync file
://`pwd`/$1 --source-username=USERNAME --source-password=PASSWORD
svnadmin
dump $1 > $1.svndump
echo
"Cleaning up ($1)..."
rm
-rf ./$1
echo
"DONE"

Passo 2

Torne-o executável:

$ chmod +x svnbackup.sh

Agora você deve ser capaz de executá-lo em um repositório, passando o nome do repositório como o primeiro argumento:

$ svnbackup.sh repo1

etapa 3

Configure uma lista de repositórios para baixar em um arquivo chamado svnrepos.txt, um repositório por linha:

repo1
repo2

Passo 4

Use xargspara iterar em cada repositório na falha, passando-o para o script de backup:

$ xargs -n1 < svnrepos.txt ./svnbackup.sh

Resultado

O resultado será um <reponame>.svndumparquivo para cada repositório na lista contendo todas as revisões para aquele repositório.