SVN中的工作副本XXXlocking和清理失败

当我执行svn update时,出现这个错误:

工作副本XXXXXXXXlocking请执行“清理”命令

当我运行清理,我得到

清理无法处理以下path:XXXXXXXX

我如何摆脱这个循环?

一种方法是:

  1. 将编辑的项目复制到其他位置。
  2. 删除包含问题path的文件夹。
  3. 通过Subversion更新包含的文件夹。
  4. 复制您的文件或根据需要合并更改。
  5. 承诺

另一种select是删除顶层文件夹并重新检出。 但希望它不会这样。

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

看看你的.svn文件夹,里面会有一个叫lock的文件。 删除该文件,您将能够更新。 每个子目录的.svn目录中可能有更多的locking文件。 他们也需要删除。 这可以通过例如命令行简单地完成

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

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

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

在我的情况下,我通过手动删除WC_LOCK表中的SQLite“.svn \ wc”文件锁logging来解决这个问题。

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

 delete from WC_LOCK 

屏幕截图显示从WC_LOCK清除的所有条目

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

最简单的方法:

  1. 转到项目的 父目录(文件夹)
  2. Pres 右键单击
  3. TortoiseSVN然后按清理…
  4. 清理对话框将自动出现
  5. selectClean up working copy statusBreak locksFix time stampsVacuum pristine copiesRefresh shell overlaysInclude externals
  6. Pres 确定

你成功地完成了你的工作

检查屏幕截图以供参考。

第一步:

在这里输入图像说明

第二步:启用Break lock选项(清理popup窗口中的第二个checkbox) 在这里输入图像说明

希望这会帮助你很多。

一位同事在工作中不断地看到这个消息,对他来说是因为他在SVN版本控制删除了一个目录, 而不从SVN中删除它,然后在不受版本控制的位置创build一个同名的新目录。

如果这是你的问题…:

有不同的方法来解决它,这取决于如何/为什么目录被replace。

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

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

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

从那里,你会

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

B)如果目录中的内容发生了重大变化,请对原始文件执行SVN删除操作,提交并重新命名新目录,然后在版本控制下进行SVN添加。

这个为我工作。

  1. 转到根文件夹,
  2. 右键单击并清理
  3. 检查所有可用的选项
  4. 按下确定

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

对于我来说,上述解决scheme都没有奏效。 我通过打破lockingfind了解决scheme。 当我执行svn清理时,我select了“Break Locks”和“清理工作副本状态”。

在这里输入图像说明

对我来说,这实际上就是乌龟的错。 乌龟只是抱怨“无法清理,无法清理干净”,但是当我运行命令行(svn cleanup)时,它清楚地告诉我,它不能删除一些正在使用的文件,解决scheme是显而易见的。 一旦我closuresVisual Studio(这是保持打开文件),然后清理工作正常。

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

我有这个问题,因为外部文件夹不希望链接到一个现有的文件夹。 如果添加一个svn:externals属性行,其中目标是现有的(版本化版本或非版本化的)文件夹,则会得到SVN Woring Copylocking错误。 这里清理也会告诉你,everthing是好的,但仍然不能更新。

解决scheme:从存储库中删除有问题的文件夹,并在svn:externals属性设置的根文件夹中进行更新。 这将创build文件夹,所有将再次罚款。

这个问题出现在我身上,因为svn:externals for files需要目标文件夹被版本控制。 在我注意到这不适用于不同的仓库之后,我从外部文件切换到外部文件夹并陷入这个混乱。

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

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

首先,确保你备份所有的编辑内容。

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

使用任何数据库pipe理器(我使用firefox的sqlitepipe理器插件)打开数据库文件,并导航到WC_LOCK表。 该表将具有获取的锁的条目。 删除表中的logging,你就完成了:)

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

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

我通过创build一个新文件夹,检出项目,将更新后的文件复制到新文件夹中。

这是用一个新的结帐固定。

你使用的是TortoiseSVN,只是升级? 从1.4版本升到1.5版本之前,我遇到过这个问题,而不是重新启动。 (尝试重新启动)。

你需要重新启动的原因是因为caching文件变得很时髦。

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

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

在Mac OS的版本中:操作 – >清理工作副本锁…

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

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

closures图像查看器,其中删除的文件被打开解决了这个问题。 也许其他软件可以用相同的方式阻塞清理。

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

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

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

现在更新应该工作。

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

就地解压这些文件,并在同一地点重新签出,为我解决了这个问题。

在TortoiseSVN中,进行到位版本pipe理,将工作副本的根文件夹从文件列表中右键拖拽到目录树中的自身上,并从popup菜单中select“SVN Export Versioned items here”。 TortoiseSVN注意到目的地与源相同,并build议将工作副本取消版本控制。

在unversioning后,做一个新的签出到同一个文件夹(现在包含所有文件的非版本副本)。 TortoiseSVN会警告您,您正在签出一个现有的文件夹,但您可以继续。

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

一个警告:如果工作副本包含混合版本或未提交的属性更改,则该信息将丢失。 对我来说,这不是一个普遍的现象,而且由于select了一个腐败的工作副本,或者失去了未经授权的财产变化,我倾向于select后者。

我有这个问题,“清理”的工作,但“更新”将继续失败。 工作的解决scheme是通过Windows资源pipe理器删除有问题的文件夹,而不是TortoiseSVN的删除(将删除标记为提交到存储库的东西,然后我做了一个“结帐”,从本质上“更新”该资源库中的文件夹。

更多有关O / S删除和SVN删除的区别在这里: http : //tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html

值得注意的是:

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

和:

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

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

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

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

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

  1. 通过在文件夹名称前面放置一个“_”来重命名有问题的文件夹。
  2. 做了一个“清理”父文件夹。
  3. 将有问题的文件夹重命名为原始名称。
  4. 做了一个提交。

在解决scheme资源pipe理器中,右键单击项目,在打开的子菜单中点击颠覆,然后select清理。 它将解决这个问题,就像它为我所做的那样。 希望它能工作。

做清理

  1. 删除.svn文件夹。

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

  3. 尝试执行清理操作。

这让我的问题得到解决。

我有这个在TortoiseSVN下,这个错误和我在一个新项目下创build的新目录有关。 我刚刚创build了这个项目,所以以前没有这个目录。 我看了一下版本库浏览器,新的文件夹确实已经在版本库中,但是TortoiseSVN没有显示它已经提交。

为了解决这个问题,因为我刚刚创build了文件夹,所以我把它在存储库中删除了,然后做了一个提交。 它工作正常。

由于我是在Visual Studio之外完成这项工作的,因此我必须重新启动Visual Studio才能将所有内容重新计算出来。

开始search….locking…select列出的所有文件并删除..固定

以下应该做的是:

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