1

Кто-нибудь знает элегантный способ заменить строку во всех хранилищах Subversion?

Что-то вроде: поиск "Facebook" и заменить его "Twitter"? Или это единственно возможное решение проверить все проекты, изменить его и зафиксировать снова? Спасибо за вашу помощь.

2 ответа2

2

Может быть, вы могли бы попробовать что-то вроде:

  • svnadmin dump REPOS_PATH> dumpfile
  • sed s/Facebook/Twitter/ дампфайл
  • svnadmin создать new_repo
  • кошачий дампфайл | загрузить svnadmin NEW_REPOS_PATH

Конечно, вы должны сделать это для каждого проекта.

1

Джорил, это изменит все ревизии в репозитории. Я думаю, что это не правильное решение.

Я предлагаю следующий сценарий. Предполагая, что у вас есть список URL репозитория в текстовом файле 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .