2010-11-30 318 views
5

按照Subversion documentation没有匹配的锁定令牌

提交完成后,使用svn 状态显示锁定令牌没有 工作副本不再存在。 这是SVN 的标准行为犯,它搜索的工作拷贝 (目标或列表,如果你提供 这样的列表)的本地修改 ,并在此步行到 发送所有锁定令牌它 遭遇服务器作为提交 事务的一部分。提交 成功完成后,所有提到的 存储库锁都被释放 - 即使在未提交的文件上也是如此。这意味着 阻止用户徘徊 关于锁定或从持有锁 太长。

在努力确保这一功能的作品,我不断地在尝试提交已在我的工作拷贝锁的文件更改时,此消息:

svn: Cannot verify lock on path '/test/test'; no matching lock-token available

现在,我已经测试过这种情况在Windows上有两个不同的工作副本,并且在RHEL上有一次,并且每次都有一个新的检出并且没有事先锁定文件的错误。如果我解锁文件,然后提交,没有问题,提交发生。如果我使用svn:needs-lock属性,则在解锁文件之前尝试提交时出现相同的错误。

我敢肯定,错误不是在客户端发生,而是在服务器端发生。我认为这可能是客户端没有将本地授权令牌传递回Subversion服务器。但是,我已经尝试过三种不同的客户端(2 CLI和Subclipse)。因为它失败了三个不同的客户端,我感觉客户端将本地授权令牌传回服务器。所以我很确定服务器是我需要解决这个问题的地方,但是哪里?

+0

只是为了澄清`svn lock test/test; echo“foo”>> test/test; svn ci -m'签入锁定'test/test`时失败? – tobyodavies 2010-12-09 00:20:51

+0

在Unix和Windows上(对平台进行了一些修改),该命令失败,'svn:无法验证路径上的锁'/ test/test';在两个系统上都没有可用的匹配锁定令牌。 – jgifford25 2010-12-09 14:32:12

回答

2

嗯,我做了一些四处看看你的问题,发现 this

它说要做的是检查文件是否只读,如果它们是,SVN认为文件被锁定并且没有匹配的锁定令牌将永远不可用(因为它实际上没有锁定)。 因此,如果它们是只读的,请尝试将它们设置为可写。

如果这不起作用,请看一下here

+0

谢谢,我在自己的研究中发现了与此问题相同的链接。很抱歉,当提交发生时,文件未设置为只读,并且存在锁定时工作副本尚未销毁并重新创建。我敢打赌,这个问题不在客户端,因为您提供的两个链接建议,而是在服务器端。 – jgifford25 2010-12-06 14:42:01

+0

第一个链接现在已经失效 – Royce 2012-05-17 23:00:37

0

也许服务器上的存储库被损坏。在服务器上使用svnadmin转储存储库,将其加载到临时存储库中的另一台计算机上,并尝试使用临时存储库执行相同的操作。

如果修复了错误,请备份旧的存储库并将其替换为临时存储库。

11

我有同样的问题:

svn: E160037: Commit failed (details follow): 
svn: E160037: Cannot verify lock on path '/QHG3/trunk/kernel/Activator.cpp'; no matching lock-token available 

我能够“窃取”锁解决这个问题:

svn lock --force AltMoverPop.cpp 
1

喔人..我搜索发布到支柱。 对我来说问题是相同的“不工作锁”,

右键单击 - >获取锁 - >检查“偷窃锁”。 修改了这个文件,并签入了。 对我来说,暂时是这样吧