使用冒号后在Windows上断开SVN存储库

时间:2018-02-05 13:12:40

标签: windows svn

我们在多操作系统环境中使用svn。我犯了一个错误,提交了一个包含冒号的文件,即bar:foobaa:foo。在linux下,这当然不是问题,但在Windows :下不是文件系统的允许字符。在意识到我的错误后,使用svn mv重命名了linux中的文件。

问题是,当签出包含:的版本时,Windows上的svn会被卡住。请考虑以下过程:

  1. 以最新状态(即使用固定文件名)签出存储库

  2. 签出包含带冒号的文件名的提交。这导致以下结果:

  3.   

    添加了foo

         

    跳过阻碍工作副本foo

         

    警告!一个或多个文件处于冲突状态。

    1. 现在尝试使用svn co返回更正后的版本会出现错误:
    2.   

      错误'bar:foo'不是目录Folder`

      中的有效文件名
      1. 无法再次尝试svn co
      2.   

        错误XML响应包含无效的XML

             

        错误格式错误的XML:找不到元素

        现在存储库卡住了,即不再可以结帐,因为您将始终收到最后一个错误。请注意,这会创建一个不在存储库中的文件foo。我尝试删除该文件和/或使用svn cleanup。但是没有任何成功,因为在svn尝试执行实际更新之前总是恢复文件。

        有没有办法修复本地的svn? 或者是进行新结账并且不惜一切代价避免Windows下受影响的修订的唯一方法吗?

1 个答案:

答案 0 :(得分:0)

所以我找到了修复它的方法。基本思想是更新到最新的revison但只更新目录本身,而不是目录中的文件。这样,所有文件都被删除,并且不会尝试更新/恢复。现在该目录位于正确的版本中,我们也可以获取当前版本的剩余文件。

使用tortois svn:

  1. 转到受影响的指令

  2. 更新到修订版...

    1. 选择最新版本

    2. 选择更新深度“仅此项目”

    3. 按确定

  3. 更新到修订版...

    1. 选择最新版本

    2. 选择更新深度“完全递归”

    3. 按确定