对于许多Subversion操作,将"@"符号附加到文件或URL参数的末尾允许您定位该文件的特定修订.例如,"svn info test.txt@1234"将提供有关test.txt的信息,因为它存在于修订版1234中.
但是,当文件名包含@时,Subversion会将其错误地解释为修订说明符:
svn info'test @ .txt'svn:语法错误解析修订版'.txt'
我尝试过双引号和单引号以及使用'/','\'和'@'转义.如何告诉Subversion将@符号视为文件名的一部分?
Rob*_*edy 281
来自SVN的书(重点补充):
感知读者可能在这一点上想知道peg修订版语法是否会导致工作副本路径或实际上有符号的URL出现问题.毕竟,svn如何知道
news@11我树中的目录名称还是" 新闻修订版11"的语法?值得庆幸的是,虽然svn将始终假设后者,但有一个简单的解决方法.您只需要在路径的末尾附加一个at符号,例如news@11@.svn只关心参数中的最后一个符号,并且在符号之后省略文字peg修订说明符并不被认为是非法的.此解决方法甚至适用于以符号结尾的路径 - 您将用于filename@@讨论名为filename @的文件.
Dav*_*d H 82
原始答案是正确的,但可能不够明确.特定的unix命令行选项如下:
svn info 'image@2x.png@'
Run Code Online (Sandbox Code Playgroud)
要么
svn info "image@2x.png@"
Run Code Online (Sandbox Code Playgroud)
要么
svn info image\@2x.png\@
Run Code Online (Sandbox Code Playgroud)
我刚测试了这三个.
Lcs*_*sky 14
在不同子文件夹中添加多个文件的解决方案:
for file in $(find ./ -type f -name "*@*.png"); do svn add $file@; done
Run Code Online (Sandbox Code Playgroud)
只需将" @ .png"中的"png"替换为您要添加的文件类型即可.
Ale*_*huk 10
只需添加
@
在你需要使用的文件中,无论它是什么SVN命令,例如:
file@2x.jpg
Run Code Online (Sandbox Code Playgroud)
至
file@2x.jpg@
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我需要从包含@符号的SVN仓库中删除文件:
这不起作用:
svn remove 'src/assets/images/hi_res/locales-usa@2x.png'
Run Code Online (Sandbox Code Playgroud)
但这样做:
svn remove 'src/assets/images/hi_res/locales-usa@2x.png@'
Run Code Online (Sandbox Code Playgroud)
要添加多个文件,还有其他解决方案:
svn status | grep \.png | awk '{print $2"@"}'| xargs svn add
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49617 次 |
| 最近记录: |