我不得不重新格式化我的电脑。我恢复了我的备份数据,包括一个包含 SVN 存储库的目录和一个包含这些存储库签出的目录。这些签出包含尚未签入的工作。
当我尝试签入时,SVN 转储错误消息。我可以将其追溯到我已经更改了这些目录的位置的事实:
C:/Users/J%C3%A9r%C3%B4me/Documents/Java/Repositories/...
C:/Users/J%C3%A9r%C3%B4me/Documents/Java/CheckOut/...
到:
C:/Users/JVerstry/Documents/Java/Repositories/...
C:/Users/JVerstry/Documents/Java/CheckOut/...
是的,我在重新安装机器时选择了不同的用户帐户名。而且,svn 确实无法恢复。
我该如何解决这个问题?我检查了隐藏存储库中的文件内容.svn
,发现它们似乎包含如下行:
file:///C:/Users/J%C3%A9r%C3%B4me/Documents/Java/Repositories/...
我在想也许我可以使用一个工具来扫描这些文件并替换J%C3%A9r%C3%B4me
。Windows JVerstry
7 有这样的工具吗?这是一个好主意吗?
编辑
事实证明,我的问题比上面描述的更严重。我的一些.svn
目录似乎已损坏 + 一些目录似乎已锁定且无法解锁(SVN 转储错误消息...)+/db
每个存储库的目录中都缺少一些目录。
答案1
我认为您应该能够通过使用 svn switch 来告诉 Subversion 您正在与“另一个” repo 对话来解决这个问题。我认为在这种情况下可能需要 --relocate。
答案2
J%C3%A9r%C3%B4me
我尝试过修改为 的想法JVerstry
,但没有成功。不过,我找到了解决所有问题的方法。
对于每个存储库:
- 我检查过了将存储库的内容放入
/NewCheckOut
目录中。 - 我从现有
/CheckOut
目录中创建了一个补丁来捕获对现有文件所做的所有修改,但不捕获自上次签出以来添加的文件。 - 我将补丁应用到我的
/NewCheckOut
目录。我必须进行一次手动干预来解决一些不兼容问题。 - 当我尝试办理登机手续时
/NewCheckOut
,我遇到了上述问题这里。我在 中创建了缺失的目录/db
。之后签到一切顺利。 - 为了检索添加的文件, 我出口
/CheckOut
我现有目录的内容/ExportCheckOut
。这样可以删除损坏的/.svn
。 - 我使用Windows资源管理器复制了
/ExportCheckOut
中的所有内容/NewCheckOut
。 - 我确保代码编译正确。
/NewCheckOut
我再次办理了登机手续。
问题解决了。不过我不清楚是什么原因造成的...