SVN中的工作副本XXX已锁定并且清除失败

时间:2008-09-24 15:37:38

标签: svn tortoisesvn

当我执行svn update

时出现此错误
  

工作副本XXXXXXXX已锁定   执行“清理”命令

当我进行清理时,我得到了

  

清理无法处理   以下路径:XXXXXXXX

如何摆脱这种循环?

48 个答案:

答案 0 :(得分:515)

一种方法是:

  1. 将已编辑的项目复制到另一个位置。
  2. 删除包含问题路径的文件夹。
  3. 通过Subversion更新包含文件夹。
  4. 根据需要复制文件或合并更改。
  5. 提交
  6. 另一种选择是删除顶级文件夹并再次签出。希望它不会发生这种情况。

答案 1 :(得分:469)

对我来说,诀窍是在我的工作副本的顶部运行svn cleanup,而不是在问题发生之前我一直在工作的文件夹中运行。

答案 2 :(得分:208)

查看.svn文件夹,其中会有一个名为lock的文件。删除该文件,您将能够更新。每个子目录的.svn目录中可能有更多的锁文件。他们还需要删除。这可以通过命令行非常简单地完成,例如

find . -name 'lock' -exec rm -v {} \;

请注意,您手动编辑.svn文件夹中的文件。他们被放在那里是有原因的。这个原因可能是一个错误,但如果不是,你可能会破坏你的本地副本。

消息来源:http://www.svnforum.org/2017/viewtopic.php?p=6068

答案 3 :(得分:101)

在我的情况下,我通过手动删除WC_LOCK表中SQLite“.svn \ wc”文件锁记录中的记录来解决它。

我用SQLite编辑器打开了“WC”文件并执行了

delete from WC_LOCK

screenshot showing all entries purged from WC_LOCK

根据eakkas的评论,您可能还需要删除WORK_QUEUE表中的所有条目。

答案 4 :(得分:87)

最简单的方式:

  1. 转到项目父目录(文件夹)
  2. 预先右键单击
  3. TortoiseSVN ,然后按清理......
  4. 自动显示清理对话框
  5. 选择Clean up working copy statusBreak locksFix time stampsVacuum pristine copiesRefresh shell overlaysInclude externals
  6. 预先确定
  7. 你成功地完成了你的工作。

    检查屏幕截图以供参考。

    第一步:

    enter image description here

    第二步: 启用Break lock选项(清理弹出窗口中的第二个复选框) enter image description here

    希望这会对你有所帮助。

答案 5 :(得分:48)

一位正在工作的同事经常看到这条消息,对他而言,这是因为他删除了SVN版本控制下的目录,而没有从SVN中删除它,然后在不在版本下的地方创建了一个新目录控制,同名。

如果这是你的问题......:

有多种方法可以修复它,具体取决于替换目录的方式/原因。

无论哪种方式,您可能需要:

A)将现有目录重命名为临时名称

B)SVN还原以恢复从文件系统中删除的目录,但不是从SVN恢复

从那里,你要么

A)将相关文件复制到已删除的目录

B)如果您对目录中的内容进行了重大更改,请对原始内容执行SVN删除,提交并将新目录重命名为所需名称,然后再添加SVN以获取 < / em>一个版本控制。

答案 6 :(得分:31)

对我来说,上述解决方案都没有奏效。 我通过打破锁来找到解决方案。 当我执行svn清理时,我选择了“Break Locks”和“清理工作副本状态”。

enter image description here

答案 7 :(得分:22)

这个对我有用。

  1. 转到根文件夹
  2. 右键单击并清理
  3. 检查所有可用选项
  4. 按ok
  5. 清理后,它将允许您更新到最新版本。

答案 8 :(得分:11)

对我来说,这实际上是Tortoise的错。 Tortoise抱怨“无法清理,运行清理”,但是当我运行命令行(svn cleanup)时,它清楚地告诉我它无法删除一些正在使用的文件,解决方案显而易见。一旦我关闭Visual Studio(保持文件打开),清理工作正常。

其他程序也可以在repo中保持文件打开,从而导致此问题。持有xls open的Excel是另一个实例的罪魁祸首,因此关闭所有可能正在使用repo中的任何程序甚至重新启动以强制程序关闭然后再次尝试清理的程序可能是明智的。

答案 9 :(得分:7)

我遇到了这个问题,因为外部文件夹不希望链接到现有文件夹。如果添加svn:externals属性行,其中目标是现有(版本化或非版本化)文件夹,您将获得SVN Woring Copy锁定错误。这里的清理工作也会告诉你,everthing是可以的,但仍然无法更新。

解决方案:从存储库中删除麻烦的文件夹,并在设置了svn:externals属性的根文件夹中进行更新。这将创建文件夹,一切都会好起来的。

这个问题出现了,因为文件的svn:externals需要对目标文件夹进行版本控制。在我注意到这不适用于不同的存储库之后,我从外部文件转移到外部文件夹并陷入了混乱。

答案 10 :(得分:6)

最简单的方法是显示隐藏文件夹,然后打开.SVN文件夹。您应该看到一个名为“lock”的零KB文件,删除它将解决问题

答案 11 :(得分:5)

我使用SVN 1.7遇到了完全相同的问题,并且没有上述修复工作。

最重要的是,请务必备份所有已修改的内容。

花了几个小时(没有重新下载所有内容,因为我的分支大小超过6GB),我发现在你的分支的.svn文件夹中有一个名为“wc”的db文件。

使用任何数据库管理器(我使用firefox的sqlite管理器插件)打开db文件并导航到WC_LOCK表。此表将包含已获取锁的条目。从表中删除记录,你就完成了:)

答案 12 :(得分:3)

如果您使用的是Windows计算机,请通过浏览器查看存储库,您可能会看到两个文件名相同但使用不同情况的文件。 Subversion区分大小写,Windows不是这样,当Windows认为它正在拉下同一个文件而Subversion没有时,你就可以获得锁定。删除存储库中的重复文件名,然后重试。

答案 13 :(得分:3)

我是通过创建一个新文件夹,签出项目,将更新的文件复制到新文件夹来实现的。

用新结账修好了。

答案 14 :(得分:3)

当我遇到这个问题时,我发现直接在问题路径上运行清理命令通常似乎有效。然后我将再次从工作根运行清理,它会抱怨其他目录。我只是重复,直到它停止抱怨。

答案 15 :(得分:2)

只需删除.svn文件夹,然后在父目录上运行清理。完美的工作!!

答案 16 :(得分:2)

我经常遇到这样的问题。我的模式导致清理问题。

  1. 我在查看器中打开图像文件。
  2. 我删除了图片文件/文件夹。
  3. 我正在尝试提交/更新
  4. 关闭打开已删除文件的图像查看器可以解决问题。 也许其他软件可以用同样的方式阻止清理。

    总的来说。我相信在这种情况下重新启动计算机可能有所帮助。

答案 17 :(得分:2)

在Mac OS下的版本中: 行动 - &gt;清理工作副本锁定在......

答案 18 :(得分:2)

您使用的是TortoiseSVN吗?我从1.4到1.5而不是重新启动之前就遇到过这个问题。 (尝试重新启动)。

您需要重新启动的原因是因为缓存文件变得非常时髦。

否则,只需继续,将该工作副本导出到新文件夹(不要复制.svn隐藏文件夹),重新签出项目,然后移回所有代码,然后继续提交。 / p>

答案 19 :(得分:1)

进行清理

  1. 删除.svn文件夹。

  2. 在根文件夹中执行svncheckout。

  3. 尝试执行清理操作。

  4. 这解决了我的问题。

答案 20 :(得分:1)

在解决方案资源管理器中,右键单击项目,在打开的子菜单中单击subversion并选择清理。这将解决问题,就像它对我所做的那样。希望它能奏效。

答案 21 :(得分:1)

对我来说,问题在于完全充满磁盘驱动器(在我的情况下是linux inode),当我删除一些文件夹时它又开始工作了。

错误如下(在任何svn操作上):

$ svn cleanup
svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
svn: E155004: Working copy locked; try running 'svn cleanup' on the root of the working copy ('/my/directory') instead.
svn: E155004: Working copy '/my/directory' locked
svn: E200030: sqlite[S14]: unable to open database file
svn: E200030: Additional errors:
svn: E200030: sqlite[S14]: unable to open database file

答案 22 :(得分:1)

我做了以下修复我的问题:

  1. 在前面放置一个“_”重命名违规文件夹 文件夹名称。
  2. 对父文件夹进行了“清理”。
  3. 将违规文件夹重命名为原始名称。
  4. 做了提交。

答案 23 :(得分:1)

我遇到了“清理”工作的问题,但“更新”会继续失败。有效的解决方案是通过Windows资源管理器删除有问题的文件夹,而不是TortoiseSVN的删除(它将删除标记为提交到存储库的东西,然后我做了“结帐”以从存储库中“更新”文件夹。

有关O / S删除与SVN删除之间差异的更多信息: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html

值得注意的是:

  

当您使用TortoiseSVN→删除文件时,它会立即从您的工作副本中删除,并在下次提交时在存储库中标记为删除。

  

如果通过资源管理器删除文件而不是使用TortoiseSVN上下文菜单,则提交对话框会显示这些文件,并允许您在提交之前将其从版本控制中删除。但是,如果您更新工作副本,Subversion将发现丢失的文件并将其替换为存储库中的最新版本。

答案 24 :(得分:1)

文件的就地取消版本以及新的结帐到同一位置,已经为我解决了这个问题。

在TortoiseSVN中,要进行就地取消反转,请将工作副本的根文件夹从文件列表右键拖动到目录树中,然后从弹出菜单中选择“SVN Export versioned items here” 。 TortoiseSVN注意到目的地与源相同,并建议取消工作副本。

取消版本后,对同一个文件夹(现在包含所有文件的无版本副本)进行新的结帐。 TortoiseSVN会警告您正在检查现有文件夹,但您可以继续。

在此之后,清理,更新和其他操作顺利进行。由于上述两个步骤都保留了本地修改,因此不应该丢失任何信息(但在此之前支持工作副本可能是一个好主意)。

一个警告:如果工作副本包含混合版本或未提交的属性更改,则该信息将丢失。对我而言,这并不常见,如果选择了腐败的工作副本或丢失了未提交的财产变更,我倾向于选择后者。

答案 25 :(得分:1)

SVN通常会在从存储库中获取实际文件之前更新文件夹中文件的内部结构(.svn / prop-base)。一旦提取了文件,这将被清除。通常会抛出错误,因为在更新过程中“更新”失败或过早取消。

  1. 检查.svn / prop-base目录下列出的所有文件
  2. 删除不在文件夹
  3. 下的所有文件
  4. 清理
  5. 更新
  6. 现在更新应该有效。

答案 26 :(得分:1)

出现同样的问题,因为我在版本控制的文件夹下导出了一个文件夹。不得不删除TortoiseSVN中的文件夹,然后从文件系统中删除该文件夹(TortoiseSVN不喜欢无版本的子文件夹......为什么不呢?)

答案 27 :(得分:1)

如果您使用的是Linux,请尝试以下操作:

find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R

然后在该目录上运行cleanup命令,然后尝试更新。

答案 28 :(得分:1)

请勿删除您的解决方案!

在.svn文件夹中,你有一个名为lock的文件,它是0字节长

您可以从解决方案中的所有.svn文件夹中删除所有这些文件,它将起作用

它适用于我的情况

答案 29 :(得分:0)

Spotlight是递归查找锁定文件的常用垃圾。

Mac App Store上的EasyFind工作

http://itunes.apple.com/gb/app/easyfind/id411673888?mt=12

搜索'lock'

全选/删除

答案 30 :(得分:0)

无论我尝试了多少种方法,清理工作都不适合我。相反,从Visual Studio中,我分别提交了每个文件夹。然后我提交了顶层文件夹并成功。

答案 31 :(得分:0)

使用乌龟svn进行svn更新时,进程被中断并停止抱怨文件正在使用中。 接下来,它要求我在文件夹上使用CleanUp命令。 我试图运行CleanUp命令,但没有成功。 然后,我发现了一个正在使用文件夹文件的命令外壳。 因此,我关闭了命令外壳,并检查是否有任何编辑器正在使用与其相关的文件。我们也需要关闭它们。 同样,我在文件夹上尝试了CleanUp,选项为Break locks,还原更改,清除工作副本状态。清理成功。 然后终于可以更新我的svn文件夹了。

答案 32 :(得分:0)

我在答案中没有看到此问题的一个原因是updatecheckout可能已与其他用户/权限一起完成,例如使用$sudo

答案 33 :(得分:0)

我在TortoiseSVN下有这个,错误与我在新项目下创建的新目录有关。我刚刚创建了这个项目,所以之前没有这个目录存在过。我查看了存储库浏览器,新文件夹确实已经在存储库中,但是TortoiseSVN没有将其显示为已提交。

为了解决它,因为我刚刚创建了文件夹,我在存储库中删除了它,然后进行了提交。它运作良好。

由于我在Visual Studio之外执行此操作,因此我不得不重新启动Visual Studio,以便重新计算所有内容。

答案 34 :(得分:0)

开始搜索....锁定...选择列出的所有文件并删除..固定

答案 35 :(得分:0)

以下应该做:

svn status | grep“.L”| sed's /.*(.*) $ / \ 1 /'| awk'{print length($ 1),$ 1}'| sort -nr | awk'{print“pushd”$ 2“; svn cleanup; popd”}'| SH

答案 36 :(得分:0)

步骤:

  1. 关闭svn文件夹中的所有编辑文件

  2. 关闭eclipse或任何使用svn目录中的文件夹或文件的编辑器。

  3. 右键单击svn check out文件夹,然后单击释放锁定。

  4. 右键单击svn check out文件夹,然后单击clean。

  5. 您的SVN已准备好进行SVN提交和更新操作。

  6. 干杯:)

答案 37 :(得分:0)

清理当然不足以解决这个问题。

如果您使用TortoiseSVN v1.7.2或更高版本,请右键单击锁定文件的Parent目录,然后选择TortoiseSVN - &gt;菜单中的Repo Browser。在Repro Browser GUI中右键单击已锁定的文件,将有一个删除锁定的选项。

答案 38 :(得分:0)

@ Chuck的解决方案对我来说不实用。在我第一次遇到这个问题时,它起了作用,但也给了很多额外的工作。在第二种情况下,我在网络外部使用笔记本时更改了文件的负载。在更改的文件后,我无法看到myselft按文件夹转到文件夹。希望乌龟和工作。了解如何:

环境是:

  1. Visual Studio 2008
  2. AnkhSVN的
  3. 步骤:

    1. 首先我无法承认,它说我需要清理
    2. 其次,我无法清理,svn中有一个文件夹 - “bin”
    3. 我下载了Tortoise最新版本,由于拦截了文件夹,尝试了并且无法正常工作。
    4. 重命名该文件夹,现在我可以使用持续版本更新本地存储库。
    5. 有几个文件进来了。
    6. 承诺并且有效。

答案 39 :(得分:0)

我知道这是一个非常古老的主题,但我坚持认为:

解决此问题的最简单,最安全的方法是删除隐藏的“.svn”文件夹并再次检查所有内容。

它解决了大多数问题,当你再次检查头版本时,svn螺丝应该保持局部变化(标记为“冲突”)。

答案 40 :(得分:0)

我遇到了同样的问题。似乎它已在最新版本中修复。 我已将Tortoise SVN更新为最新版本(1.7.11),clean up运行良好。

您可以在此处下载最新版本:downoad tortoise svn

答案 41 :(得分:0)

我的根目录中有一个文件搞砸了。 (没有锁定文件,svn清理失败等)我的整个结账是&gt; 2GB的网络速度很慢,所以再次检查所有内容对我来说不是伟大的选项。

对我有用的是什么:

  1. 还原&amp;恢复了变化 搞砸了工作副本(#1)。
  2. 查看了另一份回购文件 (#2)--depth为空
  3. 添加和 将文件提交到新文件中 工作副本(#2)。
  4. 更新了 原始工作副本(#1)。
  5. 对我来说似乎恢复了正常。

答案 42 :(得分:0)

更新目录权限(授予写访问权限)也可以解决问题。

chmod +w <dir_name>

答案 43 :(得分:-1)

就我而言,运行TortoiseSVN的Windows 7计算机无法完全重命名文件夹。没有清理,更新或重命名操作的组合可以解决问题。该文件夹最初是使用不同的案例创建的,而Tortoise或Subversion不会将其更改为存储库中的内容。

我的解决方案是:

  1. 通过Windows资源管理器复制文件夹(不带Subversion控件 项目之外的文件)。
  2. 通过TortoiseSVN删除并提交文件夹。
  3. 使用正确的(当前)名称通过Windows资源管理器复制文件夹。
  4. 通过TortoiseSVN将文件夹添加回存储库。
  5. 我在每一步之后都进行了清理。可怕的解决方案,但它对我有用。

答案 44 :(得分:-1)

在更改项目结构时,首先使用 svn copy svn move etc命令可以避免这些类型的问题。请记住,svn仅检查已添加到subversion的文件内的更改,而不是对物理目录结构的更改。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html

此外,在提交更改时,svn首先在todo列表中存储更改的“摘要”。在此todo列表中执行svn操作时,它会锁定文件以防止在执行这些svn操作时进行其他更改。如果svn动作在中途中断,例如崩溃,则文件将保持锁定,直到svn可以完成待办事项列表中的操作。可以使用 svn cleanup 命令“重新激活”。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cleanup.html

答案 45 :(得分:-1)

今天我遇到过上述问题

  

svn:运行'svn cleanup'来删除锁(输入'svn help cleanup'for   详情)

这是我的解决方案,开始工作

  1. 关闭Xcode IDE,我尝试提交更改。
  2. 在Mac上 - &gt;转到终端 - &gt;键入以下命令
  3.   

    svn cleanup <Dir path of my SVN project code>

    〔实施例:

    svn cleanup / Users / Ramdhan / SVN_Repo / ProjectName

    1. 点击进入并等待清理完成。
    2. 转到XCode IDE和清理并生成项目
    3. 现在我可以提交所有更改并进行更新。
    4. 希望这会有所帮助。

答案 46 :(得分:-1)

首先尝试了很多解决方案,然后我删除了我遇到问题的文件夹。

然后执行SVN更新。

这对我有用。

我不推荐它,但除此之外没有任何效果。 :(

答案 47 :(得分:-4)

我相信它对你很好

转到顶级SVN文件夹。

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

这肯定会解决您的问题。