svn 无法访问其中带有 @ 的 URL

svn cannot access URL with a @ in it

我使用 PyCharm 重命名了我的项目的一个分支:我要求将我的分支 v4.0.0 重命名为 v5.0.0 我不知道为什么,但是 PyCham 在中添加了一个 @目的地名称。我明白了:

svn ls svn+ssh://svn@devhost/myproject/branches/
v2.0.0/
v3.0.0/
v5.0.0@/   <----

现在,如果我尝试列出该分支中的文件,我会得到:

svn ls svn+ssh://svn@devhost/myproject/branches/v5.0.0@/
svn: warning: W160013: URL 'svn+ssh://svn@devhost/myproject/branches/v5.0.0' non-existent in revision 15667
svn: E200009: Could not list all targets because some targets don't exist

我尝试不使用 @,或者使用 %40 代替:我收到了相同的消息。 我尝试了 -r <some revision> 选项,看它是否是修订问题,但没有帮助。 我尝试再次使用 PyCharm 将 v5.0.0@ 重命名为 v5.0.0 :它告诉我不能重命名为自己。 我尝试再次使用 PyCharm 将 v5.0.0@ 重命名为 v4.0.0 :它再次将 v4.0.0@ 重命名为 @

有趣的是pycharm还能在里面浏览svn+ssh://svn@devhost/myproject/branches/v5.0.0@/

在我的终端上,svn ls 不起作用,svn co 也一样!我无法自己创建工作副本!

问题:如何将分支 v5.0.0@ 重命名为 v5.0.0

如您所知,@ 在颠覆中意味着 "peg and operative revisions" - 这是 "unexpected" 行为的原因。如果你需要在文件名中使用,你应该加倍:

svn ls svn+ssh://svn@devhost/myproject/branches/v5.0.0@@/
# or remove the @ char
svn mv svn+ssh://svn@devhost/myproject/branches/v5.0.0{@@,}/

参见第SVNbook's Peg and Operative Revisions章:

This workaround even applies to paths that end in an at sign—you would use filename@@ to talk about a file named filename@.

它也适用于工作副本。