如何解决SVN合并时出现的「Can't set properties on 'path/to/somefolder': invalid status for updating properties.」错误
问题描述
我在使用SVN进行合并操作时遇到了如下错误:
Error: Can't set properties on 'path/to/somefolder': invalid status for updating properties.
这次合并操作会删除该文件夹(实际上是把它移到了其他位置),这个文件夹里原本只有一个文件。我用TortoiseSVN点击「Continue Merge」后,还是会在同一个目录上出现相同的错误。
补充信息:我使用的是完全递归检出的工作副本,在TortoiseSVN的合并设置里选的是「specific range」(未指定具体范围),递归模式为「Fully Recursive」。
解决办法
遇到这种情况别着急,我之前也碰到过类似的问题,给你几个实用的处理方案:
清理本地工作副本的残留状态
既然这个文件夹已经在版本库中被移动/删除,本地可能残留了旧的状态信息,导致SVN试图给一个即将被删除的文件夹设置属性。你可以按以下步骤操作:- 手动删除本地的
path/to/somefolder文件夹; - 右键点击工作副本,选择TortoiseSVN中的「Clean up」;
- 在弹出的窗口里勾选「清理未完成的操作」「修复工作副本」等相关选项,执行清理;
- 清理完成后重新尝试合并操作。
- 手动删除本地的
用命令行工具强制合并
有时候TortoiseSVN的图形界面会因为状态缓存的问题卡住,这时候可以试试命令行方式。打开命令提示符,进入你的工作副本目录,执行以下命令:svn merge --force [你的合并源URL] .注意把
[你的合并源URL]替换成实际的合并范围对应的URL,命令末尾的.表示当前工作目录。--force参数会强制跳过一些状态不一致的问题,帮助完成合并。调整合并的递归策略
由于出问题的文件夹已经是空的且被移走,你可以尝试调整合并的递归方式:
在TortoiseSVN的合并窗口中,取消选择「Fully Recursive」,换成「Recursive」或者「Non-recursive」模式;或者直接在合并路径中排除这个出问题的文件夹,先完成其他部分的合并,之后再手动同步该文件夹的状态。
备注:内容来源于stack exchange,提问作者idbrii

