提交时乌龟SVN中的工作副本锁定错误


94

每当我对工作副本进行更改时,我都使用Tortoise SVN更新并提交对服务器中存储库的更改。但是几天之后,我无法提交更改,并且每当尝试提交时都会收到以下错误。

Working copy 'C:\Program Files\EasyPHP\www\project\php' locked.
'C:\Program Files\EasyPHP\www\project' is already locked.

我试图通过右键单击该文件夹并选择Tortoise SVN> Release lock来解锁该文件夹,它说

没有什么可以解锁的。该工作副本中没有文件具有锁定

可能是什么问题?

Answers:


232

没问题...试试这个:

  • 转到顶级SVN文件夹。
  • 右键单击文件夹(包含您的svn文件)> TortoiseSVN> 清理

这肯定会解决您的问题。我做了很多时间... :)

注意。确保在“清除”对话框中选择了“中断锁定”选项。


谢谢@MicroEyes ...现在我可以提交了。我只是有一个小疑问。更改文件后,我应该先提交然后更新文件(在工作副本中)还是先更新然后提交?
尼尔

2
始终遵循更新,然后提交。否则,您将收到一条消息,要求您从TortoiseSVN更新,因为您的版本副本较旧,然后存储在SVN服务器中。因此,无论如何,您都必须更新并提交。
MicroEyes 2012年

1
是的..解决了我的有关将当前副本更新为svn修订版的问题。
Jayesh Bhoi 2014年

我只是在SVN中添加了文件,然后尝试提交,但出现了同样的错误。我尝试了cleanUp命令,但无法解决此问题。
Ashok Chandrapal,2015年

我经历了很多。在显示此错误消息之前,我可以减少svn花费的时间吗(目前为5秒)?因此,我可以更早开始清理。
非用户

15

接受的答案对我不起作用。要解决该问题,我必须右键单击已锁定的文件,然后选择repo-browser。这将打开一个弹出窗口,其中包含文件在SVN服务器上的状态。然后,我右键单击锁定的文件并选择break lock

当我关闭存储库浏览器时,回到浏览器,我终于可以提交了!


您只需要确保在“清除”对话框中选择了“中断锁定”选项。我认为默认情况下它是选中的(这就是为什么在原始答案中未提及)。
Nux

12
  1. 右键单击文件夹。
  2. TortoiseSVN->检查修改。
  3. 单击检查存储库按钮。
  4. 中断对返回的所有文件的锁定

3

我也遇到了这个问题。对于某些人,我想指出,如果它已锁定,请检查您的团队。团队中的某些人可能因为他们正在进行工作而锁定了某些东西(这使开发人员无需其他人也可以尝试处理相同的内容就可以进行处理)。在这种情况下,释放锁定然后进行更新可能会丢失锁定它的开发人员的数据。

考虑到这一点,我担心的是,“清理”选项可能会更改我的工作副本或从Subversion的Repo级别删除信息。事实并非如此。答案对我有用。当我在更新过程中单击“取消”时,该矿井被锁定。我最终拉了一些分支,我不需要这些东西,所以我点击了取消。我的工作副本被锁定。使用命令“ release lock”时,找不到“锁定”的任何文档。这让我感到困惑,在快速阅读(和该线程)后,我尝试了“清理”命令。清理后,它解决了我的问题,并且没有任何锁定。

来源:http : //tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-locking.html


2

SVN中“锁”的含义多种多样,其中一些涉及“中断锁”或队友持锁的答案并未使用与原始问题相关的含义。这个问题与“工作副本锁”有关(即它们完全在计算机上的工作副本本地,与您或持有文件锁定/签出的队友无关)。MicroEyes接受的答案是指正确的用法,这是发生这种情况时的最佳选择。

如果清理无效,则可能需要签出项目的新工作副本。如果您有任何未提交的修改文件,则需要将其复制到新的工作副本中,以免丢失更改。

有关“锁”的三种用法的说明,请参见Tortoise SVN文档中的此页面:http : //tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-locking.html

摘录(添加重点):

“锁”的三个含义

在本节中以及本书中几乎所有地方,“锁定”和“锁定”一词描述了用户之间相互排斥以避免冲突提交的机制。不幸的是,Subversion还有其他两种“锁”,因此有时需要关注这本书。

第二个是工作副本锁,由Subversion在内部使用,以防止在同一工作副本上运行的多个Subversion客户端之间发生冲突。通常,每当由于错误而中断诸如update / commit / ...之类的命令时,您都会获得这些锁。可以通过在工作副本上运行cleanup命令来删除这些锁定,如“清理”一节中所述。

...


2

我不知道哪个文件具有锁定,所以要解决这个问题,我要做的是:

  1. 转到最高级别的文件夹
  2. 单击清除,然后从清除方法中打勾->断开锁定

这对我有用。


1

我尝试过各种方法,包括在较低的子目录上进行“清理”。最后,我尝试更新顶层文件夹。没有。然后,我阅读了“清理顶层”提示。我试过了 清理部分成功,但锁仍然存在。我的解决方案是回到顶层,清理,然后清理我可以追溯到的每个红色(!)文件夹。毕竟是“清理”了,更新工作正常。“打破锁定”技巧也很不错,除了团队中的某人可能对事物具有合法锁定。


0

我设法将自己锁定在svn中的文件之外-不知道如何-但是当我尝试(重新)获取锁定(Tortoise正在显示文件的“获取锁定”选项)时,它抱怨已经有了锁。我尝试删除文件并提交目录更改-同样的结果。我尝试了CleanUp(包括刷新叠加层),但是也失败了。

解决方法是进入Tortoise存储库浏览器,找到文件并使用中断锁定功能。


0

如果这不起作用(https://stackoverflow.com/a/11764922/3045875):检查其他SVN工具是否正在干扰并关闭该工具。在使用TortoiseSVN进行合并时,我们仅花费了几个小时的时间,却遇到了数十种此类锁定错误。最终,我们发现Matlabs SVN集成会产生干扰,并且在关闭后全部解决。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.