当我执行以下操作时出现此错误svn update
:
工作副本 XXXXXXXX 已锁定 请执行“清理”命令
当我运行清理时,我得到
清理未能处理以下路径:XXXXXXXX
我如何摆脱这个循环?
当我执行以下操作时出现此错误svn update
:
工作副本 XXXXXXXX 已锁定 请执行“清理”命令
当我运行清理时,我得到
清理未能处理以下路径:XXXXXXXX
我如何摆脱这个循环?
一种方法是:
另一种选择是删除顶级文件夹并再次签出。但希望它不会变成那样。
对我来说,诀窍是svn cleanup
在我的工作副本的顶部运行,而不是在问题发生之前我一直在工作的文件夹中。
查看您的.svn
文件夹,其中将有一个名为lock
. 删除该文件,您将能够更新。.svn
每个子目录的目录下可能会有更多的锁文件。他们也需要删除。这可以很简单地从命令行批量完成,例如
find . -name 'lock' -exec rm -v {} \;
请注意,您正在手动编辑文件.svn
夹中的文件。他们被放在那里是有原因的。这个原因可能是一个错误,但如果不是,您可能会损坏您的本地副本。
在我的情况下,我通过手动删除 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
你成功地完成了你的工作。
检查屏幕截图以供参考。
第一步:
第二步:
启用 Break lock 选项(清理弹出窗口中的第二个复选框)
希望这会对您有很大帮助。
一个同事在工作中经常看到这个消息,对他来说是因为他删除了一个SVN版本控制下的目录而没有从SVN中删除它,然后在它不受版本控制的地方创建了一个新目录,同名。
如果这是您的问题...:
有不同的方法来修复它,这取决于目录被替换的方式/原因。
无论哪种方式,您都可能需要:
A) 将现有目录重命名为临时名称
B) 执行 SVN 还原以恢复从文件系统中删除的目录,而不是从 SVN 中删除的目录
从那里,你要么
A) 将相关文件复制到被删除的目录中
B)如果目录中的内容发生重大变化,请对原始目录执行 SVN 删除,提交并将新目录重命名为所需的名称,然后添加 SVN 以使该目录处于版本控制之下。
这个对我有用。
清理后,它将允许您更新到最新版本。
对我来说,这实际上是乌龟的错,有点。乌龟只是抱怨“无法清理,运行清理”,但是当我运行命令行(svn cleanup)时,它清楚地告诉我它无法删除一些正在使用的文件,解决方案很明显。一旦我关闭了 Visual Studio(它使文件保持打开状态),那么清理工作就很好了。
其他程序也可以在 repo 中保持文件打开,从而导致此问题。Excel 保持打开 xls 在另一个实例中是罪魁祸首,因此关闭所有可能使用 repo 中任何内容的程序甚至重新启动以强制程序关闭然后再次尝试清理可能是明智的。
我遇到了这个问题,因为外部文件夹不想链接到现有文件夹。如果在目标是现有(版本化或非版本化)文件夹的位置添加 svn:externals 属性行,您将收到 SVN Woring Copy locked 错误。在这里清理也会告诉你一切都很好,但仍然无法更新。
解决方案:从存储库中删除麻烦的文件夹,并在设置了 svn:externals 属性的根文件夹中进行更新。这将创建文件夹,一切都会再次好起来的。
这个问题对我来说是因为 svn:externals 文件需要目标文件夹进行版本控制。在我注意到这在不同的存储库中不起作用之后,我从外部文件交换到外部文件夹并陷入了这个混乱。
最简单的方法是显示隐藏文件夹,然后打开 .SVN 文件夹。您应该会看到一个名为“lock”的零 KB 文件,删除这将解决问题
我使用 SVN 1.7 遇到了完全相同的问题,上面提到的修复都没有奏效。
首先,请确保备份所有已编辑的内容。
花了几个小时后(没有重新下载所有内容,因为我的分支大小超过 6gb),我发现分支的 .svn 文件夹中有一个名为“wc”的 db 文件。
使用任何 db 管理器(我使用 firefox 的 sqlite manager 插件)打开 db 文件并导航到 WC_LOCK 表。该表将包含已获取锁的条目。从表中删除记录,你就完成了:)
当我遇到这个问题时,我发现直接在问题路径上运行清理命令通常似乎有效。然后我将再次从工作根目录运行清理,它会抱怨其他一些目录。我只是重复,直到它停止抱怨。
如果您在 Windows 机器上,通过浏览器查看存储库,您很可能会看到两个文件名相同但大小写不同的文件。Subversion 区分大小写,而 Windows 不区分大小写,因此当 Windows 认为它正在拉下同一个文件而 Subversion 没有时,您可以获得锁定。删除存储库中重复的文件名,然后重试。
我通过创建一个新文件夹、签出项目、将更新的文件复制到新文件夹来做到这一点。
它是通过新的结帐修复的。
您是否使用 TortoiseSVN 并且刚刚升级?我之前从 1.4 移动到 1.5 并且没有重新启动时遇到过这个问题。(尝试重新启动)。
您需要重新启动的原因是因为缓存文件变得很时髦。
否则,继续前进,将该工作副本导出到新文件夹(不要复制 .svn 隐藏文件夹),重新签出项目,然后将所有代码移回,然后继续提交。
只需删除 .svn 文件夹,然后在父目录上运行清理。完美运行!!
在 Mac OS 下的版本中:操作 -> 清理工作副本锁定在...
我经常遇到这样的问题。我的模式导致清理问题。
关闭打开已删除文件的图像查看器可以解决问题。也许其他软件可以以同样的方式阻止清理。
一般来说。我相信在这种情况下重新启动计算机可能会有所帮助。
SVN 通常会在从存储库中获取实际文件之前更新其文件夹中文件的内部结构(.svn/prop-base)。一旦文件被提取,这将被清除。由于“更新”失败或在更新过程中过早取消,因此经常引发错误。
现在更新应该可以工作了。
有同样的问题,因为我在版本控制的文件夹下导出了一个文件夹。必须从 TortoiseSVN 中删除该文件夹,然后从文件系统中删除该文件夹(TortoiseSVN 不喜欢未版本控制的子文件夹......为什么不呢???)
我在 TortoiseSVN 下有这个,错误与我在新项目下创建的新目录有关。我刚刚创建了这个项目,所以这个目录以前不可能存在。我查看了存储库浏览器,新文件夹确实已经在存储库中,但是 TortoiseSVN 并没有将其显示为已提交。
为了解决这个问题,因为我刚刚创建了文件夹,所以我在存储库中删除了它,然后进行了提交。它工作得很好。
由于我是在 Visual Studio 之外执行此操作的,因此我必须重新启动 Visual Studio 才能再次解决所有问题。
开始搜索......锁定......选择列出的所有文件并删除......已修复
以下应该做:
svn 状态 | grep ".l" | sed 's/.* (.*)$/\1/' | awk '{打印长度($1),$1}' | 排序-nr | awk '{print "pushd" $2"; svn cleanup ; popd"}' | 嘘
不要删除您的解决方案!
在 .svn 文件夹中,您有一个名为 lock 的文件,它的长度为 0 字节
您可以从解决方案中的所有 .svn 文件夹中删除所有这些文件,它会起作用
它适用于我的情况
如果你在 Linux 上,试试这个:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
然后在该目录上运行cleanup
命令,然后尝试更新。
文件的就地取消版本化,以及重新签出到同一位置,为我解决了这个问题。
在 TortoiseSVN 中,要进行就地取消版本化,请将工作副本的根文件夹从文件列表中右键拖动到目录树中的自身上,然后从弹出菜单中选择“SVN Export versioned items here”。TortoiseSVN 注意到目标与源相同,并建议取消对工作副本的版本控制。
取消版本化后,重新检出同一个文件夹(其中现在包含您拥有的所有文件的未版本化副本)。TortoiseSVN 会警告您正在签出到现有文件夹,但您可以继续。
在此之后,清理、更新和其他操作顺利进行。由于上述两个步骤都保留了本地修改,因此不应丢失任何信息(但在此之前备份工作副本可能是个好主意)。
一个警告:如果工作副本包含混合版本或未提交的属性更改,则该信息将丢失。对我来说,这并不常见,考虑到选择损坏的工作副本或丢失未提交的属性更改,我倾向于选择后者。
我在“清理”工作的地方遇到了这个问题,但“更新”会继续失败。有效的解决方案是通过 Windows 资源管理器删除有问题的文件夹,而不是 TortoiseSVN 的删除(这将删除标记为提交到存储库的内容,然后我进行了“签出”以从存储库中“更新”文件夹。
有关 O/S 删除和 SVN 删除之间区别的更多信息:http: //tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html
尤其:
当您 TortoiseSVN → 删除一个文件时,它会立即从您的工作副本中删除,并在下次提交时在存储库中标记为删除。
和:
如果通过资源管理器而不是使用 TortoiseSVN 上下文菜单删除文件,则提交对话框会显示这些文件,并允许您在提交之前将它们从版本控制中删除。但是,如果您更新您的工作副本,Subversion 将发现丢失的文件并将其替换为存储库中的最新版本。
我做了以下事情来解决我的问题:
在解决方案资源管理器中,右键单击项目,在打开的子菜单中单击颠覆并选择清理。它将解决问题,就像对我一样。希望它会奏效。
进行清理
删除 .svn 文件夹。
在根文件夹中执行 svncheckout。
尝试执行清理操作。
这解决了我的问题。
对我来说,问题出在完全满的磁盘驱动器上(在我的情况下是 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
@Chuck 的解决方案对我来说并不实用。在我第一次遇到这个问题时,它起作用了,但也给了我很多额外的工作。在第二种情况下,我在网络外使用笔记本时更改了文件负载。更改文件后,我看不到自己一个文件夹一个文件夹。对乌龟抱有希望并努力了。怎么看:
环境是:
程序:
我的根目录中有一个文件搞砸了。(没有锁定文件,svn 清理失败等)我的整个结帐大于 2GB,网络速度很慢,所以再次检查所有内容对我来说不是一个好选择。
什么对我有用:
对我来说似乎恢复了正常。
更新目录权限(授予写入权限)也可以解决问题。
chmod +w <dir_name>
我有同样的问题。似乎它已在最新版本中修复。我已将我的更新Tortoise SVN
到最新版本(1.7.11)并且clean up
运行良好。
你可以在这里下载最新版本:downoad tortoise svn。
我知道这是一个非常古老的线程,但我坚持认为:
解决此问题的最简单和最安全的方法是删除隐藏的“.svn”文件夹并再次检查所有内容。
当您再次检查头部修订时,当 svn 螺丝应该保留本地更改(标记为“冲突”)时,它修复了大多数问题。
有时清理肯定不足以解决这个问题。
如果您使用 TortoiseSVN v1.7.2 或更高版本,请右键单击锁定文件的父目录,然后从菜单中选择 TortoiseSVN -> Repo Browser。在 Repro 浏览器 GUI 中,右键单击被锁定的文件,将有一个选项来取消锁定。
脚步 :
关闭 svn 文件夹中的所有编辑文件
关闭 eclipse 或任何使用 svn 目录中的文件夹或文件的编辑器。
右键单击 svn check out 文件夹,然后单击释放锁定。
右键单击 svn 签出文件夹,然后单击清理。
您的 SVN 已准备好进行 SVN 提交和更新操作。
干杯:)
今天我遇到了上面的问题说
svn:运行 'svn cleanup' 来移除锁(输入 'svn help cleanup' 了解详情)
这是我的解决方案,开始工作
svn cleanup <Dir path of my SVN project code>
示例:
svn cleanup /Users/Ramdhan/SVN_Repo/ProjectName
希望这会有所帮助。
我在答案中没有看到这个问题的一个原因是,update
或者checkout
可能已经使用其他用户/权限完成了,例如使用$sudo
.
首先尝试了很多解决方案,然后我只是删除了我遇到问题的文件夹。
然后执行 SVN 更新。
这对我有用。
我不会推荐它,但除此之外没有任何效果。:(
在使用 tortoise svn 进行 svn 更新时,该过程被中断并停止抱怨文件正在使用中。接下来它要求我对文件夹使用 CleanUp 命令。我试图运行 CleanUp 命令,但它没有这样做。然后我找到了一个使用文件夹文件的命令外壳。因此,我关闭了命令外壳并检查是否有任何编辑器正在使用与其相关的文件。我们也需要关闭它们。再次,我尝试使用选项 Break locks,revert changes,clear working copy status 对文件夹进行清理。清理成功。然后终于能够更新我的 svn 文件夹。
无论我尝试了多少种方法,清理都对我不起作用。相反,我从 Visual Studio 单独提交了每个文件夹。然后我提交了顶层文件夹并成功了。
因为这里没有列出这个答案:我的解决方案是关闭我的 IDE(在本例中为 Netbeans)。似乎IDE已锁定文件。
Spotlight 在递归查找锁定文件时通常是垃圾。
Mac App Store 上的 EasyFind 工作
http://itunes.apple.com/gb/app/easyfind/id411673888?mt=12
搜索“锁”
全选/删除
在对项目结构进行更改时,首先可以通过使用svn copy和svn move等命令来避免这些类型的问题。请记住 svn 仅检查已添加到 subversion 的文件内部的更改,而不检查物理目录结构的更改。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html
此外,在提交更改时,svn 首先将更改的“摘要”存储在待办事项列表中。在执行此待办事项列表中的 svn 操作时,它会锁定文件以防止在执行这些 svn 操作时进行其他更改。如果 svn 操作中途中断,比如崩溃,文件将保持锁定状态,直到 svn 可以完成待办事项列表中的操作。这可以通过使用svn cleanup命令“重新激活”。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cleanup.html
就我而言,运行 TortoiseSVN 的 Windows 7 机器无法完全重命名文件夹。清理、更新或重命名操作的组合无法解决问题。该文件夹最初是用不同的大小写创建的,Tortoise 或 Subversion 不会将其更改为存储库中的内容。
我的解决方案是:
我在每一步之后都进行了清理。可怕的解决方案,但它对我有用。
我相信它对你很好
转到顶级 SVN 文件夹。
右键单击文件夹(包含您的 svn 文件)-> TortoiseSVN -> CleanUp
这肯定会解决你的问题。