文件夹已锁定,我无法解锁


108

当我尝试从项目中更新或提交代码时,它告诉我该文件夹已锁定。当我尝试“释放锁定”时,它说在此工作空间中没有什么可以解锁。

那是什么意思?为什么我不能更新,提交甚至清理项目。


您正在使用哪个版本的svn?
Chriseyre2000

资料库的集合,Tourtise SVN 1.7
Iyad Al aqel 2012年

那么,每个目录中是否只有.svn文件夹,还是只有根目录?
Chriseyre2000

您是否尝试过将项目再次签到单独的工作副本中?
伯纳德

是的,如果我在其他文件夹中检查它却可以正常工作,则数据库无法打开
Iyad Al aqel 2012年

Answers:


161

右键单击您的Subversion工作目录文件夹,然后从上下文菜单中选择TortoiseSVN-> Clean Up。这将循环遍历您的工作目录,并清理所有未完成的操作,删除本地锁(这与对存储库中的文件使用Subversion锁不同,后者使所有人都知道锁)。

如果这不起作用,请查看是否可以找到已更改但尚未提交的文件的名称,保存它们,然后重做签出。


28
我遇到了这个问题,清理工作不起作用(由于本地锁定而无法清理),但是转到父文件夹(该文件夹也在版本控制下)并在那里进行清理解决了该问题。
恶意

2
您可以通过选中Break locks选项来打破本地锁定。
aagjalpankaj

1
@Malvineous的评论很宝贵。应该发布这个作为答案。
懒惰的忍者

16

如果文件被您自己锁定(相同的svn帐户),则可以按照以下步骤操作:

右键单击锁定的文件或文件夹,然后选择TortoiseSVN-> Get lock ...,然后在对话框的左下角选中“ [] Steal the locks ”,然后单击“确定”。如果成功完成,那就可以了。当再次右键单击该文件时,您会看到 TortoiseSVN-> Release lock ...,单击以解锁。


12

使用svn命令行解锁本地文件夹,只需使用svn cleanup

之前:

# svn commit -m "fixing #1234"

承诺

# svn st

之前

# svn cleanup

后:

# svn st

后

# svn commit -m "fixing #1234"

之后2


10

对于仍然存在此问题(错误:工作副本'{DIR}'已锁定。)的任何人,我有您的解决方案:

我发现,当TortoiseSVN窗口之一崩溃时,它会留下一个TSVNCache.exe,该文件仍具有一些工作副本的句柄,并导致您看到的Lock问题(并且还阻止了Clean Up的工作)。

因此,要解决此问题:

要么

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

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

然后

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

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


8

这是我第一次遇到这个问题。我什至试图重新启动PC,但没有任何效果。这解决了我的问题:

我的解决方案:

  1. 右键单击 “项目工作目录”。
  2. 导航到TortoiseSVN
  3. 导航以清理
  4. 保留所有默认选项,然后检查“ 中断锁定”
  5. 点击确定

这对我有用。我能够提交更改。


1
选中“突破锁”复选框可解决我的问题。
Banketeshvar Narayan

这是我一直在寻找的完美答案。感谢一吨
vamshi krishna kurella

这应该是正确的答案。实用,简单,直接!
Oana-Elena Danescu

3

要从命令提示符中解锁当前正在被另一个用户锁定的文件中的文件,请使用--force选项。

$ svn unlock --force tree.jpg


如果我想解锁目录怎么办?
IgorGanapolsky

@IgorGanapolsky在上面的命令中提供目录名而不是文件名
manav mn 16/08/23

@IgorGanapolsky您遇到了什么错误味精。让我检查一下
manav mn 2016年

该节点不是文件
IgorGanapolsky '16

3

我遇到了这个问题,并且已经按照以下步骤解决了:

  1. 转到父文件夹而不是子文件夹
  2. 选择SVN清理
  3. 单击确定。

在父文件夹而不是子文件夹上执行此步骤!

它对我有用!


1

我正在将文件夹上移到另一个文件夹。我的错误是从父文件夹进行移动。

错误的例子:

pwd -> C:\Repo\ParentDir\
svn move ./DirtoCopy ../AnotherDir

SVN需要使用已删除的文件夹信息更新父目录。
您必须从源文件夹和目标文件夹的公用根目录执行此操作,或者使用完整路径。

好的例子:

svn move C:\Repo\ParentDir\DirtoCopy C:\Repo\NewLocation

1

我遇到了无法从客户端解锁文件的问题。我决定去更简单的服务器端。

在SVN服务器上:

找到锁

 svnadmin lslocks /root/of/repo
 (in my case it was var/www/svn/[name of Company])

 You can add a specific path to this by svnadmin lslocks /root/of/repo "path/to/file"

解除锁定

 svnadmin rmlocks /root/of/repo “path/to/file” 

而已!


0

解决方案:

  1. 右键单击“项目工作目录”。
  2. 浏览TortoiseSVN。
  3. 导航以清理。
  4. 选择清理工作副本状态(选中标记)
  5. 点击确定
  6. 重复步骤1和2,然后导航以释放“锁定”。
  7. 单击“确定”。您的项目锁被打开。

0

除了David M的答案外,在进行清理时->选中'break locks'选项。这将确保释放锁。然后做svn更新。这对我有用。


0

要解锁被阻止的文档:1.右键单击->锁2.选中“隐藏锁”复选框2.释放锁


0

我对此问题进行了大量研究,但是在尝试以下方法之前,没有解决方案可以解决我的问题:

我的repo文件夹与Windows xp虚拟机共享,因此我从VM执行清理,然后从主机执行SVN UPDATE。

它为我工作。

来自哥斯达黎加的问候。



-1

当Tortoise损坏并在尝试更新文件夹时崩溃后,我发生了这种情况。我最终重新安装了Tortoise,但仍然存在鬼锁。从那里,我必须删除文件夹并进行新的签出。显然我很幸运,当时我没有任何新更改要提交。无论如何,这不是一个好消息,如果有人有更好的解决方案,我希望自己听一听。即使使用“ Break Lock”(即“ Break Lock”),即使用force选项解锁也没有改变任何内容。



-1

这些操作后我遇到了这个问题:

  1. 锁定文件夹
  2. 修改文件
  3. 删除文件并更新文件夹->下载新文件
  4. 尝试提交或释放锁

我终于通过再次强制锁定来解决了这个问题:TortoiseSVN->获取锁定->检查“窃取锁定”,然后提交或释放锁定。

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.