【问题标题】:How to move/rename a file in Subversion with @ characters in it如何在Subversion中移动/重命名带有@字符的文件
【发布时间】:2015-02-03 09:42:47
【问题描述】:

来自SVN book

敏锐的读者此时可能想知道 peg 修订语法是否会导致工作副本路径或实际上包含 at 符号的 URL 出现问题。毕竟,svn 是如何知道 news@11 是我树中目录的名称,还是只是“新闻的第 11 版”的语法?值得庆幸的是,虽然 svn 总是假设后者,但有一个简单的解决方法。 您只需在路径末尾附加一个 at 符号,例如 news@11@。 svn 只关心参数中的最后一个 at 符号,并且在 at 符号之后省略文字 peg 修订说明符并不被认为是非法的。这种解决方法甚至适用于以 at 符号结尾的路径——您可以使用 filename@@ 来讨论名为 filename@ 的文件。


根据这个描述,你只需要在路径中加一个@符号即可。

所以这个:

svn add "C:\SomeTests\my@file.txt"

给我这个错误:

svn: E200009: 'C:/SomeTests/my@file.txt': 此处不允许进行 peg 修订

还有这个:

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@

我应该怎么做它总是有效的? 不管@符号是在开头、中间还是结尾?

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

【问题讨论】:

    标签: svn character rename move at-sign


    【解决方案1】:

    我试图重命名一堆文件,它们都包含一个“@”。
    这个 PowerShell 命令对我有用:

    Get-ChildItem | ForEach-Object {svn mv ($_.Name+'@') $_.Name.replace("abc", "def")}
    

    它重命名当前文件夹中的所有文件。如果文件名未更改,则会显示该文件的错误消息,但操作会继续。

    【讨论】:

      【解决方案2】:

      好问题;有问题的答案... 这似乎打错了;可能不是从命令行复制的。我目前不在 Windows 上,因此无法在那里测试您的解决方案。 此外,我正在使用 svn 重命名目录,并在 Linux 上的名称中使用和 at 符号。

      svn mv "WindowListGroup@bcdev.arch@gmail.com@" "AdvancedWindowList@bcdev.arch@gmail.com"
      

      请注意,源末尾的单个 @ 会转义名称中的任意数量的 @。目的地是字面意思。

      另请参阅:This SO post

      【讨论】:

        【解决方案3】:

        我到处都在尝试获得一些支持。 但现在我通过反复试验找到了我的解决方案。

        只需像这样运行命令:

        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
        

        我希望它可以为您省去我遇到的麻烦。 :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-01
          • 1970-01-01
          • 2017-02-01
          • 1970-01-01
          • 2014-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多