要让SVN不追踪编译生成的特定后缀文件,必须在文件未被版本控制前设置svn:ignore属性;对已提交文件需先svn delete --keep-local再提交删除,使其变为未受控状态后方可忽略;还可配置客户端全局忽略规则。

要让SVN不追踪编译生成的特定后缀文件(如 .class、.apk、.dex、.log 等),核心是正确使用 svn:ignore 属性,且必须在文件尚未被纳入版本控制前设置——对已提交的文件,该属性无效。
确认文件状态再操作
运行以下命令检查目标文件是否已被版本控制:
- svn status —— 若显示 ?,说明未受控,可直接忽略;
- 若显示 A(已添加)或 M(已修改),需先取消版本控制或删除后重新提交(见后文);
- svn:ignore 对已受控文件完全不起作用,这是 SVN 的设计限制,不是配置错误。
设置 svn:ignore 忽略后缀文件
进入包含目标文件的目录(例如项目根目录或 src/ 目录),执行:
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
-
svn propset svn:ignore "*.class" . —— 忽略当前目录下所有
.class文件; - svn propset svn:ignore "*.log" . —— 同理忽略日志文件;
- 支持通配符:
*.apk、*.dex、local.properties(无通配符也有效); - 如需递归应用到所有子目录,加 -R 参数:svn propset svn:ignore -R "*.class" .;
- 设置后必须提交:svn commit -m "add ignore rules for build files"。
处理已被误提交的编译文件
如果 .class 或 app.conf 等文件已经存在于仓库中,仅设 svn:ignore 无法阻止后续变更被检测。此时需:
- 先从工作副本中删除该文件:svn delete --keep-local filename.class;
- 再提交删除操作:svn commit -m "remove compiled .class from version control";
- 之后该文件变为未受控状态(
?),此时再设svn:ignore才生效; - 注意:不要用系统命令直接删,否则
svn status会显示!(缺失),需先svn revert或svn delete处理。
补充:全局忽略(客户端级,非仓库级)
适用于所有工作副本的通用临时文件,如 .DS_Store、*.swp,可配置在 SVN 客户端全局忽略列表中:
- Linux/macOS:编辑 ~/.subversion/config,取消注释并修改
global-ignore =行,加入所需模式; - Windows(TortoiseSVN):右键 → TortoiseSVN → Settings → General → Global ignore pattern;
- 注意:此设置只影响本地
svn add行为,不改变仓库策略,也不同步给其他协作者。

















