工作副本锁定

Posted

技术标签:

【中文标题】工作副本锁定【英文标题】:Working Copy Locked 【发布时间】:2012-02-03 20:51:25 【问题描述】:

我正在开发一个使用 subversion 作为版本控制的网站,但收到“工作目录锁定”错误消息

故事是这样的:

我有

PC-A:

Windows XP 专业版 VisualSVN 2.5.2 乌龟 SVN 1.7.3

PC-B:

Windows XP 主页 乌龟 SVN 1.7.3

我已经使用 VisualSVN 在 PC-A 上创建了存储库。

从 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。

我创建了一个运行 my-post-commit.bat 文件的提交后挂钩,因此当我提交到 http:\\PC-A:81\svn\test\trunk,文件夹 D:\xampp\htdocs\test- lalalaon PC-A 将会更新,所以其他人可以看到结果。

"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 文件并提交。当我提交时,我收到此错误消息

在 PC-A 上,我尝试右键单击 D:\xampp\htdocs\test-lalala TortoiseSVN > CleanUp,然后检查“清理工作副本状态”和“包括外部”(默认选中)。尝试添加文件并提交,但仍然收到相同的错误消息。

我尝试在 .svn 文件夹中查找锁定文件,但没有锁定文件。我也尝试删除 PC-A D:\xampp\htdocs\test-lalala 上的工作副本并再次结帐,但是当我提交时,仍然收到相同的错误消息。

如何解决这个错误信息?所以当我提交时,文件夹会自动更新?

【问题讨论】:

Jonathon J Howey 的回答对我有用。我还得做一件事,那就是在清理之前关闭我的视觉工作室。 【参考方案1】:

每次我遇到工作副本锁定错误时,我都会运行“清理”。之后一切恢复正常。

您可以在命令行上执行svn cleanup,这也会删除锁定文件。

注意:在上一级目录上执行此操作,大多数情况下应该可以解决。

【讨论】:

当我从锁定位置向上清理一个目录时为我工作 它在 Ubuntu 上运行,我在客户端上有 Ubuntu,在服务器上有 Linux,它可以工作。实际上,这个问题在 Linux 上比在 Windows 上更频繁地发生在我身上。 如果使用 GUI,请不要忘记选中“Break locks”复选框。【参考方案2】:

对于仍然遇到此问题的任何人(错误:工作副本“DIR”已锁定。),我有您的解决方案:

我发现当一个 TortoiseSVN 窗口崩溃时,它会留下一个 TSVNCache.exe,它仍然有一些处理您的工作副本的句柄,这会导致您看到的锁定问题(并且还会阻止清理工作) .

所以要解决这个问题:

要么

1a) 使用 Process Explorer 或类似工具删除 TSVNCache.exe 拥有的句柄

1b) ..或者更简单,只需使用任务管理器杀死 TSVNCache.exe

然后

2) 右键 -> TortoiseSVN -> 清理。只需要检查“清理工作副本状态”。

从那里,快乐的更新/提交。您可以通过执行 SVN 更新来重现锁定行为,然后在更新完成之前快速杀死它的 TortoiseProc.exe 进程。

【讨论】:

刚刚运行清理对我有用,但这是在注销并再次打开之后,所以可能以这种方式杀死了进程。 我让 Visual Studio 与 AnkhSVN 一起运行,并且必须在清理工作之前关闭它。 经过大量搜索,我终于找到了这个。这应该更明显,因为它是唯一对我有用的东西!【参考方案3】:

在***目录级别运行“清理”。

【讨论】:

“工作目录锁定”错误可能是由于在文件夹/文件添加时 svn 客户端锁定并且未正确提交,可能会通过清理修复。 当我没有在 ***目录 级别运行清理时,我得到了同样的错误 +1 表示“在***目录级别”。没有其他人提到它,它似乎很重要。【参考方案4】:

我通过删除WC_LOCK表中SQLite“.svn\wc.db”文件锁记录中的WC_Lock记录解决了。

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

从 WC_LOCK 中删除

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

【讨论】:

DB Browser for SQL Lite 和 SQLLite 编辑器一样吗? 是的,应该是。对我来说,我只是通常使用 Firefox 扩展来编辑数据库【参考方案5】:

我通过删除隐藏的 .svn 文件夹来修复它,并将其替换为新的结帐 .svn 并且它有效。可能这个隐藏的文件夹搞砸了!

【讨论】:

【参考方案6】:

我相信它对你很有效

转到*** SVN 文件夹。

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

这肯定会解决您的问题。

【讨论】:

【参考方案7】:

如果您是 Windows 用户并使用“Tortoise SVN”用户。

选择文件。右键点击。 选项 'Tortoise SVN' --> 获取锁。 使用选项“窃取锁”。

【讨论】:

【参考方案8】:

您只需一步即可修复它。

第 1 步:打开终端并转到您的项目,然后启动命令“svn cleanup”然后“svn update”

【讨论】:

这是两步;P ...甚至是三步【参考方案9】:

我最终使用了导出命令而不是更新命令。这是提交后的钩子

"C:\Program Files\VisualSVN Server\bin\svn.exe" export "D:\xampp\htdocs\test-lalala" --quiet --non-interactive --force --username myusername --password我的密码

【讨论】:

【参考方案10】:

错误“工作副本被锁定”, 只需按照以下步骤操作:

    更新时您在哪个目录中遇到错误 转到其父目录 在父目录中转到“.svn”隐藏目录 删除名为“lock”的文件 清理并完成

您可以正确更新svn而不会出错

【讨论】:

【参考方案11】:

乌龟 svn ->清理

这就是 SVN 中的全部内容

【讨论】:

经常失败或无限期清理 如果用户遇到问题并且根本不使用 TortoiseSVN 怎么办?【参考方案12】:

当您遇到工作副本错误时,只需运行 svn cleanup 即可清除所有不需要的文件和文件夹。如果仍然出现错误,那就做一件事。

将您的文件复制到其他驱动器并删除工作副本文件夹或文件,然后进行更新,它将获取新文件并在此替换为您更新的副本并提交相同的内容。

【讨论】:

【参考方案13】:

我遇到了与您描述的相同的问题。这似乎是 Tortoise 1.7.3 上的一个错误。我已经恢复到 1.7.2,执行了清理和更新。 现在我的 SVN/Tortoise 又可以正常工作了

【讨论】:

【参考方案14】:

对于 PHPStorm 或 Intellij:

VCS -> Cleanup Project

【讨论】:

【参考方案15】:

您的 BitLocker 磁盘加密是否正在运行?在我的情况下,它锁定了磁盘的整个驱动器进行加密,并且 SVN 因此错误而失败。

【讨论】:

【参考方案16】:
svn cleanup test-lalala/
svn update

重复两次

【讨论】:

您能进一步解释一下吗? test-lalala 代表什么? @NicoHaase 与问题中使用的名称相同 “重复两次”是什么意思?

以上是关于工作副本锁定的主要内容,如果未能解决你的问题,请参考以下文章

SVN 错误 - 不是工作副本

Mercurial:我如何找出我的工作副本和另一个副本之间的区别

Java内存模型与Volatile,Happen-Before原则等

如何从 Mercurial 克隆中删除工作副本?

SVN 升级工作副本

Xcode Source Control 显示多个工作副本