Зеркало удаленного SVN репозитория в Windows
Со сменой провайдера у меня исчез внешний IP адрес, и встал вопрос о размещении моих абочих исходников в сети Интернет. Был выбран бесплатный SVN хостинг. Мое параноидальное сознание захотело быть уверенным в том, что если владелец хостинга захочет его закрыть – мои исходники не потеряются. Решено было создать зеркало рабочего svn на локальном компьютере. В этой статье я расскажу как сделать зеркало SVN сервера, которое по расписанию будет вытягивать изменения рабочего сервера.
Для начала, Вам нужен локальный SVN сервер. Его выбор и установка – тема другой статьи. Будем считать, что:
Далее:
1. Нужно создать новый репозиторий на локальном сервере.
Открываем консоль виндовс. Перемещаемся в папку c:\svn.
2. В проводнике открываем папку C:\svn\repo\project\hooks, находим файл pre-revprop-change.tmpl и меняем расширение на bat.
3. Теперь нам нужно инициализировать репозиторий.
Ответ вида "Copied properties for revision 0." считаем верным.
Если что то подобное:
то в файле pre-revprop-change.bat удаляем содержимое и пишем
Для начала, Вам нужен локальный 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 04. Теперь нужно запустить синхронизацию
svnsync --non-interactive sync http://localhost/svn/project --source-username slogin --source-password spass --sync-username dlogin --sync-password dpassЕсли она прошла успешно, и в вашем svn появились комиты удаленного сервера - можно создать bat файл с предыдущей коммандой и настроить его запуск по расписанию в планировщике Windows.
Обращаю внимание, что данный метод просто переносит все комиты с удаленного сервера на локальный. Цель этого - бэкап удаленного сервера. Изменения в локальном сервере (комиты и прочее) не только не перенесутся на удаленный сервер, но и поламают синхронизацию. Она просто перестанет работать.

а нет ошибки в п.1?
ВідповістиВидалитиможет правильнее:
---
svnadmin create ./repo/project
---
?
Спасибо, моя опечатка - исправил.
ВідповістиВидалития хочу сделать тоже действие в линукс, но там нет 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)
что я делаю не так?
Сделал на Linux Mandriva и всё заработало, так что спасибо Вам, добрые люди!
ВідповістиВидалити