svnsync - 无法锁定目标存储库

sdu*_*sdu 52 svn svnsync

使用svnsync

$ svnsync --non-interactive sync ${REPO}
Run Code Online (Sandbox Code Playgroud)

在中止该过程后,出现此错误消息并重试

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  
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

s3v*_*3v1 59

实际上,svnsync中内置了一些可以"窃取"锁的功能.

svnsync help sync
Run Code Online (Sandbox Code Playgroud)

说明:

--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.
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到一个很好的:

Stole lock previously held by '[hostname]'
Run Code Online (Sandbox Code Playgroud)

所以,毕竟你不需要propdel的东西

  • 此选项在v1.6中不可用 (12认同)

khm*_*ise 54

您必须通过远程站点上的svn命令行删除远程存储库上的lock属性,该命令行在同步期间因故障而遗留.

svn propdel --revprop -r0 svn:sync-lock file:///path/to/the/repository
Run Code Online (Sandbox Code Playgroud)

  • 不,不是远程存储库 - 本地同步(镜像)存储库. (11认同)

Mat*_*ite 10

从技术上讲,它是从远程存储库中删除属性所需的目标存储库,因为目标可能是本地的.所以对于这个具体问题:

svn propdel --revprop -r0 svn:sync-lock ${REPO}
Run Code Online (Sandbox Code Playgroud)