Настройка svnsync для существующей копии репозитория

Некоторое время назад встала задача запустить svnsync поверх существующей копии репозитория (проблема заключается в том, что svnsync init требует для настройки реплики пустой репозиторий).

В результате получился следующий алгорим решения этой задачи нужно:

  • в свойствах ревизии номер 0 (файл db/revprops/0/0) прописать вручную параметры:
    • svn:sync-from-url = <URL мастер-репозитория>
    • svn:sync-from-uuid = <UUID мастер-репозитория> Узнать UUID репозитория можно командой svn info <URL мастер-репозитория>.
    • svn:sync-last-merged-rev = <номер последней ревии в текущем репозитории>
      Номер ревизии указан в файле db/current.
    • Лишние параметры svn:sync-* нужно удалить.
  • удалить все блокировки из репозитория (svnadmin rmlocks …);
  • добавить хук: hooks/pre-revprop-change;
  • отключить pre-commit и post-commit хуки, если есть.

После этого можно запустить синхронизацию при помощи svnsync.

Формат параметров в db/revprops

Парамеры в файлах db/revprops имеют вид:

K <Длина имени параметра>
<Имя параметра>
V <Длина значения параметра>
<Значение параметра>

Например:

K 17
svn:sync-from-url
V 15
svn://host/repo
comments powered by Disqus