我们在多操作系统环境中使用svn。我犯了一个错误,提交了一个包含冒号的文件,即bar:foo
和baa:foo
。在linux下,这当然不是问题,但在Windows :
下不是文件系统的允许字符。在意识到我的错误后,使用svn mv
重命名了linux中的文件。
问题是,当签出包含:
的版本时,Windows上的svn会被卡住。请考虑以下过程:
以最新状态(即使用固定文件名)签出存储库
签出包含带冒号的文件名的提交。这导致以下结果:
添加了foo
跳过阻碍工作副本foo
警告!一个或多个文件处于冲突状态。
svn co
返回更正后的版本会出现错误:错误'bar:foo'不是目录Folder`
中的有效文件名
svn co
:错误XML响应包含无效的XML
错误格式错误的XML:找不到元素
现在存储库卡住了,即不再可以结帐,因为您将始终收到最后一个错误。请注意,这会创建一个不在存储库中的文件foo
。我尝试删除该文件和/或使用svn cleanup
。但是没有任何成功,因为在svn
尝试执行实际更新之前总是恢复文件。
有没有办法修复本地的svn? 或者是进行新结账并且不惜一切代价避免Windows下受影响的修订的唯一方法吗?
答案 0 :(得分:0)
所以我找到了修复它的方法。基本思想是更新到最新的revison但只更新目录本身,而不是目录中的文件。这样,所有文件都被删除,并且不会尝试更新/恢复。现在该目录位于正确的版本中,我们也可以获取当前版本的剩余文件。
使用tortois svn:
转到受影响的指令
更新到修订版...
选择最新版本
选择更新深度“仅此项目”
按确定
更新到修订版...
选择最新版本
选择更新深度“完全递归”
按确定