【问题标题】:How to remove a file with @ in it's name from svn in command line?如何从命令行中的svn中删除名称中带有@的文件?
【发布时间】:2011-03-31 11:51:23
【问题描述】:

使用新的 iPhone 2x 文件时,我偶然发现了这个问题......

【问题讨论】:

  • 有什么问题?哪个组件拒绝文件名?你得到什么错误?在什么平台上?
  • 这里有类似问题:stackoverflow.com/questions/1985203/…
  • 因@Dmitry 的建议而投票结束

标签: svn


【解决方案1】:

您需要在末尾添加一个“@”符号才能让 SVN 处理该文件。

例如,如果您有一个名为 foo@2x.png 的文件要添加到 SVN,您可以输入:

svn add foo@2x.png@

如果您想要批量处理大量名称中带有“@”符号的文件(即使用 * 通配符),您可以在 OS X 终端中执行以下操作:

find . -name "*@*" | xargs -I % svn add %@

上述命令将使用 find 实用程序列出文件名中带有 @ 的每个文件,然后使用 XARGS 将 每个文件路径 传送到 SVN。

对于每个文件路径,XARGS 将执行提供的命令svn add %@,除了-I % 告诉XARGS 替换 中每个出现的“%” >提供的命令,通过管道传输文件路径。 XARGS 有效地将特殊的“@”附加到文件名的末尾。

例如替换“%”字符后,XARGS会执行svn add path/to/your/file@2x.png@; SVN 会接受这个(大概是因为 SVN 会查找 last 出现的“@”并将其视为修订说明符)

希望这会有所帮助 - 我不得不费力地添加我的应用程序升级到 iOS4.0 所需的大量 @2x.png 文件

【讨论】:

  • 当然,如果你想删除文件而不是添加它们,你只需要将上面示例中的 svn add 替换为 svn delete 就可以了。
  • 不错的一个。不过看起来很奇怪——为什么要在最后添加一个“@”才能使这项工作有效?它在任何地方都有记录吗?
  • 很奇怪,我在文件名末尾加了@ubuntu@ec2-54-245-12-20.us-west-2.compute.amazonaws.com@,svn delete 成功了。
  • @PaulD.Waite 我认为它可以工作,因为 SVN 将字符串中的最后一个 @ 视为修订说明符,因此在末尾添加一个会使其忽略前一个。
  • 解决方案在SVNBook中描述:svnbook.red-bean.com/en/1.8/svn.advanced.pegrevs.html
猜你喜欢
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2014-08-08
  • 1970-01-01
相关资源
最近更新 更多