svnsync - не удалось получить блокировку репозиториев назначения
С помощью svnsync
$ svnsync --non-interactive sync ${REPO}
после прерывания процесса появилось это сообщение об ошибке с повтора
Failed to get lock on destination repos, currently held by 'svn.test.com:0e4e0d98-631d-0410-9a00-9330a90920b3'
...
Failed to get lock on destination repos, currently held by 'svn.test.com:0e4e0d98-631d-0410-9a00-9330a90920b3'
svnsync: Couldn't get lock on destination repos after 10 attempts
есть ли способ решить эту проблему?
6 ответов:
на самом деле, есть некоторые функции, встроенные в svnsync, которые могут "украсть" замок.
svnsync help syncпоказывает:
--steal-lock : Steal locks as necessary. Use, with caution, if your mirror repository contains stale locks and is not being concurrently accessed by another svnsync instance.и когда я запускаю его, я получаю хороший:
Stole lock previously held by '[hostname]'таким образом, вам не нужно propdel все-таки
вы должны удалить свойство lock в удаленном репозитории через командную строку svn на удаленном сайте, который остался от сбоя во время синхронизации.
svn propdel --revprop -r0 svn:sync-lock file:///path/to/the/repository
технически, это конечный репозиторий, из которого вам нужно удалить свойство, а не обязательно удаленный репозиторий, поскольку назначение может быть локальным. Поэтому для этого конкретного вопроса:
svn propdel --revprop -r0 svn:sync-lock ${REPO}
снятие замка сработало для меня. Однако мне пришлось использовать немного другую команду, так как мне нужно было отправить имя пользователя и пароль учетной записи, чтобы использовать его для разблокировки учетной записи.
svn pdel --revprop -r 0 --username ??? --password ??? svn:sync-lock file:///path/to/the/repositoryмне также пришлось запустить эту команду с диска, на котором был включен репозиторий. (изменить на d: в командной строке перед запуском команды, если мой репозиторий был на d:)
перед вводом имени пользователя и пароля, когда я запустил команду, я получил следующее ошибка:
revprop change blocked by pre-revprop-change hook (exit code 255)Я нашел и открыл
pre-revprop-changehook file, и в нем был код, в котором перечислялось только определенное имя пользователя, которое могло внести необходимые изменения. Использование этого имени пользователя и пароля в приведенной выше команде удалило крючок.
чтобы подтвердить наличие блокировки(хотя ошибка явно говорит об этом), запустите proplist с
-verbosesvn pl --revprop -v -r 0 file:///svn/slaveзатем удалите опору по мере необходимости!
вы должны сделать две вещи, чтобы решить проблему. Один удаляется замок, как указано выше. Затем вы должны отредактировать pre-revprop-change.tmpl файл должен быть пустым,и сделать его исполняемым. Используйте команду chmod +x в Linux/Unix или Mac, но изменить имя файла для предварительного свойство-меняться.летучая мышь на окнах. После этого вы можете загрузить файлы дампа в свой репозиторий, а затем отразить его там, где вам нужно.
Comments