svn:ignore属性用于忽略指定模式的未版本化文件,仅对当前目录生效、不递归,不支持正则;需用svn propset设置并提交,仅影响未跟踪文件,已提交文件须先svn delete --keep-local。

SVN 的 svn:ignore 属性用于告诉 Subversion 在执行 svn status、svn add 等操作时,忽略指定名称或模式的未版本控制文件。它只对**目录**生效,且仅影响该目录下的直接子项(不递归),不能用于忽略已纳入版本控制的文件。
设置 svn:ignore 属性的基本步骤
在目标目录上设置 svn:ignore,需使用 svn propset 命令,并指定要忽略的文件名或通配符模式:
- 进入包含待忽略文件的目录(例如
trunk/src/) - 运行命令:
svn propset svn:ignore "build" .(忽略名为build的子目录) - 或一次设置多个(每行一个模式):
svn propset svn:ignore "*.class\n*.log" . - 执行
svn commit -m "Set ignore patterns"提交属性变更
支持的匹配模式与注意事项
svn:ignore 支持简单通配符(* 和 ?),但不支持正则表达式或路径嵌套匹配:
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
-
*.tmp—— 忽略当前目录下所有以.tmp结尾的文件 -
config.local—— 忽略同名文件(精确匹配) -
node_modules—— 忽略同名子目录 -
logs/不生效 ——svn:ignore不识别斜杠结尾,应写为logs -
**/*.pyc不支持 —— 无法跨层级匹配,每个目录需单独设置
查看和修改已有忽略规则
使用 svn proplist 和 svn propget 查看当前设置:
-
svn proplist .—— 列出当前目录所有属性 -
svn propget svn:ignore .—— 显示当前忽略规则 - 如需追加规则,先用
svn propget获取现有值,再拼接新规则后重新propset(SVN 不支持增量修改) - 清空忽略列表可执行:
svn propdel svn:ignore .
常见误区与替代方案
遇到以下情况时,svn:ignore 无法满足需求,需考虑其他方式:
- 想忽略已提交的文件?—— 先执行
svn delete --keep-local filename,再设svn:ignore - 需要全局忽略(如所有
.DS_Store)?—— 配置客户端global-ignores(在~/.subversion/config中修改) - 需跨多级目录统一忽略?—— 每个目标目录都需单独设置
svn:ignore属性 - 误设导致文件被漏提交?—— 使用
svn status --no-ignore查看被忽略项,确认是否符合预期










