SVN工作副本XXX被锁定,清理失败

当我做svn update时,我得到这个错误:

工作副本XXXXXXXX锁定请 执行"Cleanup"命令

当我清理的时候,我得到

清理失败 XXXXXXXX

我怎样才能跳出这个循环呢?

916988 次浏览

你是否正在使用TortoiseSVN并且刚刚升级?我以前从1.4迁移到1.5时就遇到过这个问题,而且无法重新启动。(尝试重启)。

您需要重新启动的原因是缓存文件变得异常。

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

一种方法是:

  1. 将编辑过的项目复制到另一个位置。
  2. 删除包含问题路径的文件夹。
  3. 通过Subversion更新包含的文件夹。
  4. 复制文件或根据需要合并更改。
  5. 提交

另一种选择是删除顶级文件夹并再次签出。希望不会发展到那种地步。

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

如果这是你的问题……

有不同的方法来修复它,这取决于如何/为什么替换目录。

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

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

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

从那里开始,你可以选择

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

B)如果目录中的内容发生了重大变化,请在原始目录上执行SVN删除,提交,并将新目录重命名为所需的名称,然后执行SVN添加,使目录处于版本控制之下。

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

  1. 检查.svn/prop-base目录下列出的文件
  2. 删除任何不在文件夹下的文件
  3. 清理
  4. 更新

现在更新应该可以工作了。

同样的问题,因为我导出了一个版本控制文件夹下的文件夹。必须从TortoiseSVN中删除文件夹,然后从文件系统中删除文件夹(TortoiseSVN不喜欢未版本化的子文件夹…为什么不呢? ?)

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

在你的.svn文件夹中,会有一个名为lock的文件。删除该文件,您将能够更新。每个子目录的.svn目录中可能有更多的锁文件。它们也需要删除。这可以作为批处理从命令行非常简单地完成,例如。

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

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

来源:# eyz0

当我遇到这个问题时,我发现直接在问题路径上运行清理命令通常似乎可以工作。然后,我将再次从工作根目录运行清理,它将报错其他目录。我一直重复,直到它不再抱怨。

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

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

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

为了解决这个问题,因为我刚刚创建了这个文件夹,所以我在存储库中删除了它,然后进行了提交。它运行得很好。

因为我是在Visual Studio之外完成的,所以我必须重新启动Visual Studio,让它重新解决所有问题。

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

我遇到这个问题是因为外部文件夹不想被链接到现有文件夹中。如果您添加了一个svn:externals属性行,其中目标是一个现有的(有版本控制的或没有版本控制的)文件夹,您将得到svn Woring Copy locked错误。这里的清理也会告诉你一切正常,但仍然更新不工作。

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

我遇到这个问题是因为svn:externals for files要求目标文件夹进行版本控制。当我注意到这在不同的存储库中不起作用后,我从外部文件切换到外部文件夹,陷入了这种混乱。

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

应该做到以下几点:

SVN status | grep”。L" | sed 's/。*(. *) / \ 1美元/ | awk的{打印长度(1美元),$ 1}”|排序nr | awk的{打印2美元“pushd;SVN清理;Popd "}' | sh

不要删除您的解决方案!

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

您可以从解决方案中的所有.svn文件夹中删除所有这些文件,这样就可以工作了

这对我来说是有效的

如果你在Linux上,试试这个:

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

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

查克的解决方案对我来说不实用。在我第一次遇到这个问题时,它起作用了,但也给了我很多额外的工作。在第二种情况下,当我在网络外使用我的笔记本电脑时,我改变了文件的负载。我无法想象自己在更改文件后一个文件夹一个文件夹地查看。对乌龟抱着希望,努力工作。看看:

环境是:

  1. Visual Studio 2008
  2. Ankhsvn

过程:

  1. 首先我不能承诺,它说我需要清理
  2. 第二,我无法清理,在svn - bin中有一个文件夹
  3. 我下载了龟的最新版本,尝试和不工作,由于dammed文件夹。
  4. 重命名该文件夹,现在我可以更新本地存储库的最新版本。
  5. 来了几份文件。
  6. 做了承诺并成功了。

就地撤销文件版本,并将新的签入到相同的位置,为我解决了这个问题。

在TortoiseSVN中,要进行就地版本化,请从文件列表中右拖工作副本的根文件夹到目录树中,并从弹出菜单中选择“SVN Export versioned items here”。TortoiseSVN注意到目标和源是相同的,并建议解除工作副本的版本控制。

在解除版本控制之后,对同一文件夹执行一次新的签出(现在包含所有文件的未版本控制副本)。TortoiseSVN会警告你,你正在签入一个现有的文件夹,但你可以继续。

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

警告:如果工作副本包含混合版本或未提交的属性更改,则该信息将丢失。对我来说,这种情况并不常见,如果要在损坏的工作副本或丢失未提交的属性更改之间做出选择,我倾向于选择后者。

我的根目录中有一个文件把它弄乱了。(没有锁文件,svn清理失败等)我的整个签出是> 2GB,网速较慢,所以再次检查所有内容对我来说不是伟大的选项。

对我有用的是:

    <李>恢复,的恢复变化 乱七八糟的工作副本(#1).
  1. 检查另一份回购副本 (#2)——depth空
  2. <李>和补充道 在new中提交文件 工作副本(#2).
  3. 在 原始工作副本(#1).

对我来说似乎又恢复正常了。

我只是创建了一个新文件夹,签出项目,将更新的文件复制到新文件夹中。

用新的结账方式修好了。

我遇到了这样的问题,“清理”工作,但“更新”将继续失败。有效的解决方案是通过Windows资源管理器删除有问题的文件夹,而不是TortoiseSVN的删除(这将删除标记为提交到存储库的内容,然后我做了一个“签出”,从存储库中“更新”文件夹。

更多关于O/S delete和SVN delete的区别: # EYZ0 < / p >

值得注意的是:

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

和:

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

Spotlight在递归查找锁文件方面是它通常的垃圾。

EasyFind在Mac App Store上运行良好

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

搜索“lock”

全选/删除

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

chmod +w <dir_name>

我做了以下来解决我的问题:

    的前面加上“_”,重命名了有问题的文件夹 李文件夹名字。< / >
  1. 对父文件夹进行了“清理”。
  2. 将有问题的文件夹重命名为原来的名称。
  3. 做了一个提交。

在Mac OS下版本: 动作->清除工作拷贝锁

在我的案例中,我通过手动删除SQLite中的一条记录来解决这个问题”。svn\wc"文件锁记录在WC_LOCK表中。

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

delete from WC_LOCK

screen show all entries purged from WC_LOCK

eakkas的注释之后,您可能还需要删除WORK_QUEUE表中的所有条目。

我在使用SVN 1.7时遇到了完全相同的问题,上面提到的修复程序都不起作用。

最重要的是,确保备份所有编辑过的内容。

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

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

我也有同样的问题。似乎在最新版本中已经修复了。 我已经更新了我的Tortoise SVN到最新版本(1.7.11),clean up工作得很好

您可以在这里下载最新版本:下行龟SVN

我知道这是一个非常老的帖子,但我坚持认为:

解决这个问题最简单和最安全的方法是删除你隐藏的”。Svn”文件夹并再次检查所有内容。

当你再次检查头部修订时,它修复了svn周围的大多数问题,应该保持局部更改(标记为“冲突”)。

这个方法对我很管用。

  1. 找到根文件夹,
  2. 右击和清除
  3. 检查所有可用选项
  4. 按ok

清理后,它将允许您更新到最新版本。

清理有时并不足以解决这个问题。

如果您使用TortoiseSVN v1.7.2或更高版本,右键单击锁定文件的父目录,并从菜单中选择TortoiseSVN -> Repo Browser。在Repro Browser GUI中右键单击被锁定的文件,将会有一个选项来移除锁定。

对我来说,这其实是乌龟的错。Tortoise只是抱怨“不能清理,运行清理”,但是当我运行命令行(svn cleanup)时,它清楚地告诉我它不能删除一些正在使用的文件,解决方案是显而易见的。一旦我关闭Visual Studio(它保持文件打开),那么清理工作就很好了。

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

在解决方案资源管理器中,右键单击项目,在打开的子菜单中单击subversion并选择清理。它会解决问题,就像对我一样。希望它能起作用。

步骤:

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

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

  3. 右键单击svn签出文件夹,然后单击释放锁。

  4. 右键单击svn签出文件夹,然后单击清洁。

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

欢呼:)

在对项目结构进行更改时,首先可以使用svn副本svn的举动 etc命令来避免这些类型的问题。请记住,svn只检查已经添加到subversion的文件中的更改,而不检查物理目录结构的更改。请看http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html

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

在我的例子中,一台运行TortoiseSVN的Windows 7机器无法完全重命名文件夹。任何清理、更新或重命名操作的组合都不能解决这个问题。文件夹最初是用不同的case创建的,Tortoise或Subversion不会将其更改为存储库中的内容。

我的解决方案是:

  1. 通过Windows资源管理器复制文件夹(不带Subversion控件) 文件)在项目之外。李< / >
  2. 通过TortoiseSVN删除并提交文件夹。
  3. 通过Windows资源管理器将文件夹复制回正确的(当前)名称。
  4. 通过TortoiseSVN将文件夹添加回存储库。

我在每一步之后都进行了清理。糟糕的解决方法,但对我很有效。

我相信它对你很有效

转到顶级SVN文件夹。

右键单击文件夹(有您的svn文件)-> TortoiseSVN -> CleanUp

这肯定能解决你的问题。

做清理工作

  1. 删除“。svn”文件夹。

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

  3. 尝试执行清理操作。

这解决了我的问题。

今天我经历了以上问题说

svn:执行命令'svn cleanup'清除锁(输入'svn help cleanup') 细节)< / p >

这是我的解,开始工作了

  1. 关闭Xcode IDE,我试图从那里提交更改。
  2. 在Mac上——>进入终端——>输入下面的命令

# EYZ0

例子:

svn cleanup /Users/Ramdhan/SVN_Repo/ProjectName .日志含义

  1. 按回车键并等待清理完成。
  2. 进入XCode IDE和清洁和构建项目
  3. 现在我可以提交我的所有更改,并采取更新以及。

希望这能有所帮助。

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

错误如下(任何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

最简单的方法:

  1. 转到项目父目录(文件夹)
  2. 总统# EYZ0
  3. TortoiseSVN,然后按清理…
  4. 清理对话框将自动出现
  5. 选择Clean up working copy statusBreak locksFix time stampsVacuum pristine copiesRefresh shell overlaysInclude externals
  6. 总统# EYZ0

你成功地完成了你的工作。

检查屏幕截图以供参考。

第一步:

enter image description here

< >强第二步: 启用中断锁定选项(清除弹出窗口中的第二个复选框) # EYZ0 < / p >

希望这对你有很大帮助。

我在答案中没有看到这个问题的一个原因是,updatecheckout可能已经用其他用户/权限完成了,比如$sudo

首先尝试了许多解决方案,然后我只是删除了我有问题的文件夹。

然后执行SVN Update。

这对我很管用。

我不推荐这种方法,但除了这种方法,其他方法都不起作用。:(

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

  1. 我在查看器中打开图像文件。
  2. 我删除图像文件/文件夹。
  3. 我正在提交/更新

关闭被删除的文件所在的图像查看器可以解决这个问题。 也许其他软件可以以同样的方式阻止清理

一般来说。我相信在这种情况下重新启动电脑会有帮助。

对我来说,上面的解决方案都没用。 我通过砸锁找到了解决办法。 当我执行svn清理时,我选择了“Break Locks”和“Clean up working copy status”

enter image description here

当使用tortoise svn更新svn时,进程中断并停止报错文件正在使用。 接下来,它让我对文件夹使用清理命令。 我试图运行清理命令,但它无法这样做。 然后我找到了一个命令shell,它正在使用文件夹文件。 因此,我关闭命令shell并检查是否有任何编辑器正在使用与之相关的文件。我们也需要关闭它们。 再次,我尝试清理文件夹选项打破锁,恢复更改,清除工作副本状态。清理工作进行得很顺利。

.

.

不管我怎么努力,清理工作对我都不起作用。相反,我从Visual Studio单独提交每个文件夹。然后我提交了最上面的文件夹,并成功了。

确切地说,这里没有列出这个答案:我的解决方案是关闭我的IDE(在本例中是Netbeans)。似乎IDE已经锁定了该文件。