Subversion / Tortoise: Substitui a string em todos os repositórios?

1

Alguém conhece uma maneira elegante de substituir uma string em todos os repositórios do Subversion?

Algo como: procurar por "Facebook" e substituí-lo por "Twitter"? Ou a única solução possível é verificar todos os projetos, alterá-lo e enviá-lo novamente? Obrigado pela sua ajuda.

    
por opHASnoNAME 15.03.2010 / 08:07

2 respostas

1

Joril, isso irá alterar as todas revisões no repositório. Eu acho que não é uma decisão correta.

Eu proponho o seguinte script. Supondo que você tenha uma lista de URLs de repositório em um arquivo de texto simples repolist.txt

#!/bin/sh

# List of repository URLs
repolist='cat repolist.txt' 
# Root for temporary working directories
wdroot="wd" 
# Source filenames regexp for find(1)
fname='.*\.(txt|java|xml)' 
# Search/replace strings
oldstr="Twitter"
newstr="Plurk"
# SVN commit message
comment="replaced $oldstr by $newstr"

mkdir -p $wdroot
cd $wdroot
for repo in $repolist; do
    echo Repository: $repo
    wd='basename $repo'
    echo ... checkout
    svn co $repo $wd
    echo ... search and replace
    find $wd -regextype posix-egrep -regex $fname | xargs sed -i "s/${oldstr}/${newstr}/g"
    echo ... checkin
    ( cd $wd; svn ci -m "$comment" . )
done
    
por 15.03.2010 / 09:53
2

Talvez você possa tentar algo como:

  • svnadmin dump REPOS_PATH > dumpfile
  • seds / Facebook / Twitter / dumpfile
  • svnadmin create new_repo
  • cat dumpfile | svnadmin load NEW_REPOS_PATH

Claro que você deve fazer isso para cada projeto.

    
por 15.03.2010 / 08:56