如何为目录设置字面量"*"作为svn:ignore属性值
如何给SVN目录设置svn:ignore属性为字面量
*? 可行解决方案
有两种可靠方式能绕过SVN自身的通配符解析,直接设置*作为ignore值:
通过标准输入传递值
利用-F -参数让SVN从标准输入读取属性值,避免参数被解析:- Linux/macOS终端:
执行后输入svn propset svn:ignore -F - .*,按Ctrl+D结束输入。 - Windows cmd:
echo * | svn propset svn:ignore -F - . - PowerShell:
"*" | svn propset svn:ignore -F - .
- Linux/macOS终端:
使用
--property-value参数
SVN的propset命令支持--property-value(简写-P)参数,直接传递字面量属性值,不会触发通配符解析:svn propset svn:ignore --property-value "*" .或者用简写形式:
svn ps svn:ignore -P "*" .
为什么之前的命令失效?
你遇到的问题核心是SVN自身会对位置参数中的*做通配符解析,哪怕shell(比如cmd、PowerShell)没有展开它,SVN也会把*当作匹配当前目录文件的通配符,导致最终设置的是文件扩展名而非字面量*。嵌套引号的方式要么没绕过SVN的解析,要么错误地把引号也包含进了属性值里。
TortoiseSVN的实现逻辑
TortoiseSVN是通过直接调用SVN的底层API来设置属性的,完全跳过了命令行参数的解析流程,所以在GUI中输入*时,会直接把这个字面量传递给SVN,自然不会有通配符展开的问题。
内容的提问来源于stack exchange,提问作者aetonsi
相关产品推荐
相关产品推荐

