我执行以下操作时收到此错误svn update
:
工作副本XXXXXXXX已锁定请执行“清理”命令
运行清理时,我得到
清理无法处理以下路径:XXXXXXXX
我如何摆脱这个循环?
我执行以下操作时收到此错误svn update
:
工作副本XXXXXXXX已锁定请执行“清理”命令
运行清理时,我得到
清理无法处理以下路径:XXXXXXXX
我如何摆脱这个循环?
Answers:
一种方法是:
另一个选择是删除顶层文件夹,然后再次签出。希望这不会解决。
对我来说,诀窍是svn cleanup
在工作副本的顶部运行,而不是在问题发生之前一直在工作的文件夹中运行。
在您的.svn
文件夹中查找,其中会有一个名为的文件lock
。删除该文件,您将可以更新。.svn
每个子目录的目录中可能有更多的锁定文件。他们还需要删除。这可以非常简单地从命令行使用批处理完成,例如
find . -name 'lock' -exec rm -v {} \;
请注意,您正在手动编辑文件.svn
夹中的文件。他们被放在那里是有原因的。该原因可能是一个错误,但如果不是这样,则可能会损坏本地副本。
find . | grep ".svn/lock" | xargs rm
就我而言,我通过手动删除WC_LOCK表中SQLite“ .svn \ wc”文件锁定记录中的一条记录来解决该问题。
我用SQLite编辑器打开“ WC”文件并执行
delete from WC_LOCK
在eakkas的评论之后,您可能还需要从WORK_QUEUE
表中删除所有条目。
最简单的方法:
Clean up working copy status
,Break locks
,Fix time stamps
,Vacuum pristine copies
,Refresh shell overlays
,Include externals
您成功完成了工作。
检查屏幕快照以供参考。
第一步:
第二步: 启用“中断锁定”选项(清理弹出窗口中的第二个复选框)
希望这对您有很大帮助。
一个在工作的同事不断看到此消息,对他来说,这是因为他删除了SVN版本控制下的目录而不将其从SVN中删除,然后在同一个名字下的位置创建了一个新目录,该目录不受版本控制。
如果这是您的问题...:
有多种修复方法,具体取决于替换目录的方式/原因。
无论哪种方式,您都可能需要:
A)将现有目录重命名为临时名称
B)执行SVN还原以恢复从文件系统删除的目录,但不恢复从SVN删除的目录
从那里,你要么
A)将相关文件复制到已删除的目录中
B)如果目录中的内容有重大更改,请对原始目录进行SVN删除,然后提交,然后将新目录重命名为所需的名称,然后添加SVN以使该目录受版本控制。
这个为我工作。
清理后,它将允许您更新到最新版本。
Clean up working copy status
,Breaks locks
并且Include externals
对我来说,实际上是乌龟的错。Tortoise只是抱怨“无法清理,运行清理”,但是当我运行命令行(svn清理)时,它显然告诉我它无法删除某些正在使用的文件,解决方案显而易见。一旦我关闭了Visual Studio(使文件保持打开状态),清理工作就很好了。
其他程序也可以使文件在仓库中保持打开状态,从而导致此问题。在另一个实例中,使xls打开的Excel是罪魁祸首,因此明智的做法是关闭所有可能正使用仓库中任何内容的程序,甚至重新启动以迫使程序关闭然后再次尝试清除。
我遇到了这个问题,因为外部文件夹不想链接到现有文件夹。如果添加svn:externals属性行,其中目标是现有(版本或非版本)文件夹,则将收到SVN Woring Copy锁定错误。在这里清理也会告诉您一切都很好,但是仍然无法进行更新。
解决方案:从存储库中删除麻烦的文件夹,并在设置svn:externals属性的根文件夹中进行更新。这将创建文件夹,并且一切都将恢复正常。
这个问题对我来说是个问题,因为文件的svn:externals要求对目标文件夹进行版本控制。当我发现这不适用于不同的存储库后,我从外部文件交换到外部文件夹并陷入混乱。
最简单的方法是显示隐藏的文件夹,然后打开.SVN文件夹。您应该会看到一个名为“锁”的零KB文件,删除此文件将解决此问题。
我使用SVN 1.7遇到了完全相同的问题,并且上述修复程序均无效。
首先,请确保备份所有已编辑的内容。
花了几个小时后(由于分支的大小超过6GB,所以没有重新下载所有内容),我发现分支的.svn文件夹中有一个名为“ wc”的数据库文件。
使用任何数据库管理器(我使用过firefox的sqlite管理器插件)打开数据库文件,并导航至WC_LOCK表。该表将具有获取的锁的条目。从表中删除记录,您就可以完成:)
我是通过创建一个新文件夹,检出项目,将更新的文件复制到新文件夹来完成的。
它通过新的结帐进行修复。
只需删除.svn文件夹,然后在父目录上运行清理即可。完美的作品!
我经常遇到这样的问题。我的模式会导致清理问题。
关闭打开已删除文件的图像查看器可以解决此问题。也许其他软件可以用相同的方式阻止清除。
一般来说。我相信在这种情况下重启计算机可能会有所帮助。
发生了同样的问题,因为我在版本控制的文件夹下导出了一个文件夹。不得不从TortoiseSVN中删除文件夹,然后从文件系统中删除该文件夹(TortoiseSVN不喜欢未版本控制的子文件夹...为什么不呢???)
不要删除您的解决方案!
在.svn文件夹中,您有一个名为lock的文件,它的长度为0个字节
您可以从解决方案中的所有.svn文件夹中删除所有这些文件,然后它将起作用
以我为例
这些文件的原位取消版本控制以及到同一位置的全新签出为我解决了这个问题。
在TortoiseSVN中,要进行就地取消版本控制,请将工作副本的根文件夹从文件列表中右拖到目录树中的自身上,然后从弹出菜单中选择“ SVN在此处导出版本化的项目”。TortoiseSVN注意到目标与源相同,并建议取消版本化工作副本。
取消版本控制后,将其重新签到同一文件夹(该文件夹现在包含您拥有的所有文件的未版本控制的副本)。TortoiseSVN会警告您您正在检入现有文件夹,但是可以继续进行。
此后,清理,更新和其他操作便顺利进行了。由于以上两个步骤都保留了本地修改,因此不会丢失任何信息(但是在此之前备份工作副本可能还是个好主意)。
一个警告:如果工作副本包含混合版本或未提交的属性更改,则该信息将丢失。对我来说,这是不常见的情况,考虑到选择损坏的工作副本或丢失未提交的属性更改,我倾向于选择后者。
我遇到了“清理”工作的问题,但“更新”将继续失败。可行的解决方案是通过Windows资源管理器删除有问题的文件夹,而不是TortoiseSVN的删除(这将删除标记为要提交到存储库的内容,然后我执行了“签出”操作,以从存储库中实质上“更新”文件夹。
有关O / S删除和SVN删除之间区别的更多信息,请参见: http //tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html
值得注意的是:
当您使用TortoiseSVN→删除文件时,该文件会立即从工作副本中删除,并在下次提交时在存储库中标记为删除。
和:
如果通过浏览器而不是使用TortoiseSVN上下文菜单删除文件,则提交对话框将显示这些文件,并允许您在提交之前将它们也从版本控制中删除。但是,如果更新工作副本,Subversion将发现丢失的文件,并将其替换为资源库中的最新版本。
如果您使用的是Linux,请尝试以下操作:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
然后cleanup
在该目录上运行命令,然后尝试更新。
在解决方案资源管理器中,右键单击项目,在打开的子菜单中单击Subversion并选择清理。它将为我解决问题。希望它能工作。