工作副本已锁定。

71
我正在使用Subversion作为版本控制来开发一个网站,但是出现了“工作目录被锁定”的错误信息。
故事如下:
我有一台PC-A:
- Windows XP Pro - VisualSVN 2.5.2 - Tortoise SVN 1.7.3
还有一台PC-B:
- Windows XP Home - Tortoise SVN 1.7.3
我在PC-A上创建了一个VisualSVN仓库。
然后在PC-B上,我将http:\\PC-A:81\svn\test\trunk检出到了D:\xampp\htdocs\test-lalala。
接着,在PC-A上,我也将http:\\PC-A:81\svn\test\trunk检出到了D:\xampp\htdocs\test-lalala。
我创建了一个post-commit钩子,运行my-post-commit.bat文件,这样当我提交到http:\\PC-A:81\svn\test\trunk时,PC-A上的D:\xampp\htdocs\test-lalala文件夹会更新,因此其他人就可以看到结果。
"C:\Program Files\VisualSVN Server\bin\svn.exe" update "D:\xampp\htdocs\test-lalala" --username myusername --password mypassword --config-dir "C:\Program Files\VisualSVN Server\conf" 

在PC-B上创建index.php文件,并提交。当我提交时,我收到了这个错误信息。

error message

在PC-A上,我试图右键单击D:\xampp\htdocs\test-lalala TortoiseSVN>清理,并选中“清理工作副本状态”和“包括外部”(默认选中)。尝试添加文件并提交,但仍然收到相同的错误消息。
我尝试在.svn文件夹上查找锁定文件,但没有锁定文件。我还尝试删除PC-A D:\xampp\htdocs\test-lalala上的工作副本并重新检出,但是当我提交时,仍然收到相同的错误消息。
如何解决此错误消息?因此,当我提交时,文件夹将自动更新?

Jonathon J Howey的答案对我有用。我还需要做一件事情,就是在清理之前关闭我的Visual Studio。 - saquib adil
16个回答

197
每当我遇到“工作副本锁定”错误时,我会运行“清理”操作。之后一切就恢复正常了。
在命令行中,您可以执行svn cleanup,这也会删除锁定文件。
注意:在上一级目录执行此操作,通常可以解决大部分问题。

18
当我清理锁定位置上一级目录时,这个方法对我有用。 - waqaslam
它在Ubuntu上运行,我在客户端上使用Ubuntu,在服务器上使用Linux,它可以正常工作。实际上,这个问题在Linux上比在Windows上更经常发生。 - Yevgeniy Afanasyev
5
如果使用图形用户界面,请不要忘记勾选“打破锁定”复选框。 - Manish Dubey

36
对于仍然遇到此问题(错误:工作副本 '{DIR}' 被锁定),我有解决方案:
我发现当TortoiseSVN窗口崩溃时,它会留下一个TSVNCache.exe,该文件仍具有一些句柄指向您的工作副本,这会导致您看到的锁定问题(并且还防止Clean Up完成其工作)。
因此,要解决此问题:
要么
1a) 使用Process Explorer或类似工具删除由TSVNCache.exe拥有的句柄
1b) 或者更简单地,只需使用任务管理器杀死TSVNCache.exe 然后
2)右键单击-> TortoiseSVN-> Clean up。 只需选中“清理工作副本状态”。
从那里开始,愉快地更新/提交。 您可以通过执行SVN Update,然后在Update完成之前快速终止其TortoiseProc.exe进程来复制锁定行为。

只运行清理就可以解决我的问题,但这是在注销并重新登录后进行的,因此可能是通过这种方式终止了该进程。 - Nigel B
在进行清理之前,我正在运行带有AnkhSVN的Visual Studio,并且必须先关闭它。 - xenoclast
2
经过大量搜索,我终于找到了这个。这应该更加显眼,因为这是唯一对我有效的东西! - JohanLejdung

22
在顶级目录层次运行“清理”操作。

2
“工作目录被锁定”错误可能是由于在文件/文件夹添加时,svn客户端存在锁定且未正确提交,可以通过清理来修复。 - Prince
1
当我没有在<b>顶层目录</b>级别运行清理时,我遇到了相同的错误。 - Vincent
4
+1 表示同意在“最高目录级别”执行操作。 没有其他人提到它,但它似乎很重要。 - Melebius

11

我通过删除 SQLite ".svn\wc.db" 文件锁定记录中的 WC_Lock 记录来解决了这个问题,具体是在 WC_LOCK 表中进行的。

只需使用 SQLite 编辑器打开 "wc.db" 文件,并执行

delete from WC_LOCK

这个解决方案在另一个链接中给出了,但现在我找不到了。但这确实是一个很好的解决方法,不用担心删除所有目录。


DB Browser for SQL Lite和SQLLite编辑器是一样的吗? - user502187
是的,应该可以。对我来说,我通常使用Firefox扩展程序来编辑数据库。 - sgupta

7
我通过删除隐藏的.svn文件夹,并用新的检查.svn替换它来解决了这个问题,然后问题得到了解决。可能是这个隐藏文件夹出了问题!

5

我相信它对你来说是有效的。

转到顶层 SVN 文件夹。

右键单击文件夹(其中包含您的 svn 文件)-> TortoiseSVN -> 清理

这肯定会解决您的问题。


3

如果你是Windows用户,并且使用“Tortoise SVN”,

选择文件,右键, 选择“Tortoise SVN”选项,然后选择“获取锁定”。 使用“窃取锁定”选项。


3

您只需要一步即可解决问题。

步骤1:打开终端并进入您的项目,然后运行命令“svn cleanup”,然后运行“svn update”。


这是两个步骤;甚至可能是三个。 - D Ie

1

当你遇到工作副本错误时,请运行 svn cleanup 命令来清理所有不需要的文件和文件夹。如果仍然存在错误,那么可以这样做。

将你的文件复制到另一个驱动器中,删除工作副本文件夹或文件,然后获取更新以获取新的文件,最后用你更新后的文件替换它并提交相应更改。


1

错误 "working copy locked",只需按照以下步骤操作:

  1. 在更新时出现错误的目录中
  2. 进入其上级目录
  3. 在上级目录中进入 ".svn" 隐藏目录
  4. 删除名为 "lock" 的文件
  5. 清理并完成

这样就可以正确地更新 svn,不会再出现错误了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接