svnsync – 无法locking目标回购站
使用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
有没有办法解决这个问题?
实际上,在svnsync中有一些function可以“窃取”锁。
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]'
所以,毕竟你根本不需要事物
您必须通过远程站点上的svn命令行删除远程存储库上的locking属性,这是远程站点在同步期间发生故障时遗留下来的。
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:如果我的Repository在d上:)
在input用户名和密码之前,当我运行命令时出现以下错误:
revprop change blocked by pre-revprop-change hook (exit code 255)
我find并打开了pre-revprop-change
钩子文件,并且在那里只有一个列出了可以进行所需更改的特定用户名的代码。 在上面的命令中使用该用户名和密码删除了挂钩。
为了确认锁的存在(尽pipeerr显然告诉它),运行proplist与-verbose
svn pl --revprop -v -r 0 file:///svn/slave
然后根据需要删除道具!
你必须做两件事来解决这个问题。 一个是如上所述的删除锁。 然后,您必须将pre-revprop-change.tmpl文件编辑为空,并使其可执行。 在Linux / Unix / Mac上使用chmod + x,但在Windows上将文件名更改为pre-revprop-change.bat。 在此之后,您可以将转储文件加载到您的存储库中,然后在需要的地方进行镜像。