如何在Subversion中移动/重命名文件,其中包含@字符

时间:2014-12-05 09:01:25

标签: svn character rename move at-sign

来自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的@

我该怎么做才能始终有效? 无论@符号是在开头,中间还是在结尾?

(编辑:在我目前的问题上,字符始终位于开头或第二位。)

2 个答案:

答案 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