当我这样做时,我收到此错误svn update
:
工作副本XXXXXXXX已锁定请执行"清理"命令
当我进行清理时,我得到了
清理无法处理以下路径:XXXXXXXX
我怎么摆脱这个循环?
一种方法是:
将编辑的项目复制到另一个位置
删除包含问题路径的文件夹.
通过Subversion更新包含文件夹.
根据需要复制文件或合并更改.
承诺
另一种选择是删除顶级文件夹并再次签出.希望它不会发生这种情况.
对我来说,诀窍是svn cleanup
在我的工作副本的顶部运行,而不是在问题发生之前我一直在工作的文件夹中运行.
查看您的.svn
文件夹,其中会有一个名为的文件lock
.删除该文件,您将能够更新..svn
每个子目录的目录中可能有更多的锁文件.他们还需要删除.这可以通过命令行非常简单地完成,例如
find . -name 'lock' -exec rm -v {} \;
请注意,您手动编辑文件.svn
夹中的文件.他们被放在那里是有原因的.这个原因可能是一个错误,但如果不是,你可能会破坏你的本地副本.
消息来源:http://www.svnforum.org/2017/viewtopic.php?p = 6068
在我的例子中,我通过手动删除WC_LOCK表中SQLite".svn\wc"文件锁记录中的记录来解决它.
我用SQLite编辑器打开了"WC"文件并执行了
delete from WC_LOCK
根据eakkas的评论,您可能还需要删除WORK_QUEUE
表中的所有条目.
最简单的方式:
转到父目录(文件夹)的项目.
Pres 右键单击
按TortoiseSVN然后按清理...
清理对话框将自动出现
选择Clean up working copy status
,Break locks
,Fix time stamps
,Vacuum pristine copies
,Refresh shell overlays
,Include externals
普雷斯OK
你成功地完成了你的工作.
检查屏幕截图以供参考.
第一步:
第二步: 启用Break lock选项(清理弹出窗口中的第二个复选框)
希望这对你有很大的帮助.
工作中的同事经常看到这条消息,对他而言,这是因为他删除了SVN版本控制下的目录而没有将其从SVN中删除,然后在不受版本控制的情况下创建了一个具有相同名称的新目录.
如果这是你的问题...:
有多种方法可以修复它,具体取决于更换目录的方式/原因.
无论哪种方式,您可能需要:
A)将现有目录重命名为临时名称
B)SVN还原恢复从文件系统中删除的目录,而不是从SVN恢复
从那里,你会
A)将相关文件复制到已删除的目录中
B)如果您对目录中的内容进行了重大更改,请对原始内容执行SVN删除,提交并将新目录重命名为所需名称,然后添加SVN以在版本控制下获取该目录.
对我来说,上述解决方案都没有奏效.我通过打破锁来找到解决方案.当我执行svn清理时,我选择了"Break Locks"和"清理工作副本状态".
这个对我有用.
转到根文件夹,
右键单击并清理
检查所有可用选项
按确定
清理后,它将允许您更新到最新版本.
对我来说,这实际上是Tortoise的错.Tortoise抱怨"无法清理,运行清理",但是当我运行命令行(svn cleanup)时,它清楚地告诉我它无法删除一些正在使用的文件,解决方案显而易见.一旦我关闭Visual Studio(保持文件打开),清理工作正常.
其他程序也可以在repo中保持文件打开,从而导致此问题.持有xls open的Excel是另一个实例的罪魁祸首,因此关闭所有可能正在使用repo中的任何程序甚至重新启动以强制程序关闭然后再次尝试清理的程序可能是明智之举.
我遇到了这个问题,因为外部文件夹不希望链接到现有文件夹.如果添加svn:externals属性行,其中目标是现有(版本化或非版本化)文件夹,您将获得SVN Woring Copy锁定错误.这里的清理工作也会告诉你,everthing是可以的,但仍然无法更新.
解决方案:从存储库中删除麻烦的文件夹,并在设置了svn:externals属性的根文件夹中进行更新.这将创建文件夹,所有将再次正常.
这个问题出现在我身上,因为文件的svn:externals需要对目标文件夹进行版本控制.在我注意到这不适用于不同的存储库之后,我从外部文件转移到外部文件夹并陷入了混乱.
最简单的方法是显示隐藏文件夹,然后打开.SVN文件夹.您应该看到一个名为"lock"的零KB文件,删除它将解决问题
我使用SVN 1.7遇到了完全相同的问题,并且没有上述修复工作.
最重要的是,请确保备份所有已编辑的内容.
花了几个小时(没有重新下载所有内容,因为我的分支大小超过6GB),我发现在你的分支的.svn文件夹中有一个名为"wc"的db文件.
使用任何db管理器(我使用firefox的sqlite manager插件)打开db文件并导航到WC_LOCK表.此表将包含已获取锁的条目.从表中删除记录,你就完成了:)