来自SVN book:
感知读者可能在这一点上想知道,peg修订版语法是否会导致工作副本路径或实际上有符号的URL出现问题。毕竟,svn如何知道news @ 11是否是我树中目录的名称,还是只是“新闻修订版11”的语法?值得庆幸的是,虽然svn将始终假设后者,但有一个简单的解决方法。 您只需要在路径末尾附加一个at符号,例如news @ 11 @。 svn只关心参数中的最后一个符号,并且在符号之后省略文字peg修订说明符并不被认为是非法的。此解决方法甚至适用于以at符号结尾的路径 - 您将使用filename @@来讨论名为filename @的文件。
根据此说明,您只需要在路径中添加@符号。
所以这个:
svn add" C:\ SomeTests \ my@file.txt"
给了我那个错误:
svn:E200009:' C:/SomeTests/my@file.txt':此处不允许使用挂钩修订
和此:
svn add" C:\ SomeTests \ my@file.txt @"
适合我。
这也适合我:
svn info" C:\ SomeTests \ my@file.txt @"
更多信息:How to escape @ characters in Subversion managed file names?
好的,好的。 但是当我想用@ -characters重命名或移动文件时。它提供了奇怪的结果:
使用:
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的@
我该怎么做才能始终有效? 无论@符号是在开头,中间还是在结尾?
(编辑:在我目前的问题上,字符始终位于开头或第二位。)
答案 0 :(得分:1)
我到处都试图得到一些支持。 但现在我通过反复试验找到了我的解决方案。
只需运行如下命令:
svn mv "C:\@File.txt@\" "C:\@NewFile.txt/"
将@ (At)和\ (反斜杠)添加到源路径。 并将/ (Forwardslash)添加到目标路径。
每个选项都适用于我:
@File to NoAtFile
@File to New@File
@File to @NewFile
NoAtFile to New@File
NoAtFile to @NewFile
_@File to NoAtFile
_@File to New@File
_@File to @NewFile
我希望它能为您省去麻烦。 :)
答案 1 :(得分:0)
很棒的问题;可疑的答案...... 这似乎是错误的;也许不会从命令行复制。我目前不在Windows上,因此无法在那里测试您的解决方案。 此外,我正在使用svn重命名目录,并在Linux上使用名称和符号。
svn mv "WindowListGroup@bcdev.arch@gmail.com@" "AdvancedWindowList@bcdev.arch@gmail.com"
请注意,源末尾的单个@会在名称中转义任意数量的@。目的地是字面意思。
另请参阅:This SO post