来自SVN书籍:
敏锐的读者可能会想知道,如果工作副本路径或URL中实际上有@符号,那么钉住修订版本语法是否会导致问题。毕竟,svn如何知道news@11是我的树中一个目录的名称还是“新闻”的第11个修订版本的语法?值得庆幸的是,虽然svn总是假定后者,但有一个微不足道的解决方法。您只需要在路径末尾添加一个@符号,例如news@11@。svn仅关心参数中最后一个@符号,并且省略该@符号之后的文字钉住修订版本说明符并不违法。这种解决方法甚至适用于以@符号结尾的路径-您将使用filename@@来引用名为filename@的文件。
根据这个描述,你只需要在路径中添加一个 @ 符号。
所以这样写:
会给我返回以下错误:svn add "C:\SomeTests\my@file.txt"
而这样写:svn: E200009: 'C:/SomeTests/my@file.txt': a peg revision is not allowed here
对我来说是有效的。svn add "C:\SomeTests\my@file.txt@"
同时这样也可以:
更多信息请参见:如何转义 Subversion 中管理的文件名中的 @ 字符?svn info "C:\SomeTests\my@file.txt@"
好的,没问题。 但是当我想要重命名或移动一个带有@字符的文件时,它会提供奇怪的结果:
使用:
svn mv "C:\SomeTests\test.txt" "C:\SomeTests\my@file.txt"
我得到了这个文件名:
C:\SomeTests\my@file.txt
使用以下命令:
svn mv "C:\SomeTests\test.txt" "C:\SomeTests\my@file.txt@"
我得到的文件名为:
my@file.txt@
使用以下命令:
svn mv "C:\SomeTests\test.txt" "C:\SomeTests\@myfile.txt"
我得到的文件名是:
somefolder@myfile.txt
使用以下命令:
svn mv "C:\SomeTests\test.txt" "C:\SomeTests\@myfile.txt@"
我得到了这个文件名:
我应该怎么做才能让它始终有效?无论@符号是在开头、中间还是结尾。@myfile.txt@
(编辑:在我的当前问题中,这些字符总是在开头或第二个位置。)