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。 在此之后,您可以将转储文件加载到您的存储库中,然后在需要的地方进行镜像。