Зеркало удаленного SVN репозитория в Windows

Со сменой провайдера у меня исчез внешний IP адрес, и встал вопрос о размещении моих абочих исходников в сети Интернет. Был выбран бесплатный SVN хостинг. Мое параноидальное сознание захотело быть уверенным в том, что если владелец хостинга захочет его закрыть – мои исходники не потеряются. Решено было создать зеркало рабочего svn на локальном компьютере. В этой статье я расскажу как сделать зеркало SVN сервера, которое по расписанию будет вытягивать изменения рабочего сервера.

Для начала, Вам нужен локальный SVN сервер. Его выбор и установка – тема другой статьи. Будем считать, что:
  • svn установлен в папку c:\svn
  • папка репозиториев в c:\svn\repo
  • название проекта project
  • Адрес локального svn сервера http://localhost/svn/project
  • Адрес удаленного svn сервера http://host.com/svn/project
  • Логин и пароль на удаленный сервер slogin, spass.
  • Логин и пароль на локальный сервер dlogin, dpass.

Далее:
1. Нужно создать новый репозиторий на локальном сервере.
Открываем консоль виндовс. Перемещаемся в папку c:\svn.
svnadmin create ./repo/project

2. В проводнике открываем папку C:\svn\repo\project\hooks, находим файл pre-revprop-change.tmpl и меняем расширение на bat.

3. Теперь нам нужно инициализировать репозиторий.

svnsync init http://localhost/svn/project http://host.com/svn/project --source-username slogin --source-password spass --sync-username dlogin --sync-password dpass


Ответ вида "Copied properties for revision 0." считаем верным.
Если что то подобное:

svnsync: DAV request failed; it's possible that the repository's pre-revprop-cha
nge hook either failed or is non-existent
svnsync: At least one property change failed; repository is unchanged
svnsync: Error setting property 'sync-lock':
could not remove a property


то в файле pre-revprop-change.bat удаляем содержимое и пишем
exit 0
4. Теперь нужно запустить синхронизацию
svnsync --non-interactive sync http://localhost/svn/project --source-username slogin --source-password spass --sync-username dlogin --sync-password dpass
Если она прошла успешно, и в вашем svn появились комиты удаленного сервера - можно создать bat файл с предыдущей коммандой и настроить его запуск по расписанию в планировщике Windows.

Обращаю внимание, что данный метод просто переносит все комиты с удаленного сервера на локальный. Цель этого - бэкап удаленного сервера. Изменения в локальном сервере (комиты и прочее) не только не перенесутся на удаленный сервер, но и поламают синхронизацию. Она просто перестанет работать.

Коментарі

  1. а нет ошибки в п.1?
    может правильнее:
    ---
    svnadmin create ./repo/project
    ---
    ?

    ВідповістиВидалити
  2. Спасибо, моя опечатка - исправил.

    ВідповістиВидалити
  3. я хочу сделать тоже действие в линукс, но там нет source-username source-password sync-username sync-password
    а когда делаю инициализацию - получаю
    #svnsync init --username new --password 123123123123 http://10.1.1.142/svn/new http://10.1.1.140/svn/new/

    svnsync: PROPFIND request failed on '/svn/new'
    svnsync: PROPFIND of '/svn/new': 301 Moved Permanently (http://10.1.1.142)

    что я делаю не так?

    ВідповістиВидалити
  4. Сделал на Linux Mandriva и всё заработало, так что спасибо Вам, добрые люди!

    ВідповістиВидалити

Дописати коментар

Популярні публікації