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


есть ли способ решить эту проблему?

711   6  

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-change hook file, и в нем был код, в котором перечислялось только определенное имя пользователя, которое могло внести необходимые изменения. Использование этого имени пользователя и пароля в приведенной выше команде удалило крючок.

чтобы подтвердить наличие блокировки(хотя ошибка явно говорит об этом), запустите proplist с -verbose

svn pl --revprop -v -r 0 file:///svn/slave

затем удалите опору по мере необходимости!

вы должны сделать две вещи, чтобы решить проблему. Один удаляется замок, как указано выше. Затем вы должны отредактировать pre-revprop-change.tmpl файл должен быть пустым,и сделать его исполняемым. Используйте команду chmod +x в Linux/Unix или Mac, но изменить имя файла для предварительного свойство-меняться.летучая мышь на окнах. После этого вы можете загрузить файлы дампа в свой репозиторий, а затем отразить его там, где вам нужно.

Comments

    Ничего не найдено.