不少中小型项目,特别是公司的项目版本管控通常都仍是使用SVN,包括我本身的我的电脑,也是用SVN来进行文件管理。若是不进行忽略文件的设置,不少中间文件和二进制文件都被checkin到库中,浪费空间不说,还带来管理上的混乱。node
在git工具中,设置忽略文件只须要修改版本库根目录下的.gitignore文件就能够了,svn就没有这种方便的ignore文件,不过SVN也有替代的方法,用起来也不是太麻烦,通常来讲有两种方式,设置好了彻底能够知足大多数需求。git
在SVN的配置文件 ~/.subversion/config
中,已经有了设置,只是默认没有打开,找到[miscellany]
段,将global-ignores
前面的注释去掉便可,另外还能够本身增长一些想忽略的文件类型,例如个人修改:bash
[miscellany] global-ignores=*.o *.so *.so.[0-9]* *.a *.pyc *.dylib
这个配置是只影响本地客户端,对版本库没有任何影响,适用于本机全部 svn 管理的项目。 ide
大多数时候,工程目录下会有一些不须要进行版本管理的文件和目录,如临时编译文件夹或是本地配置信息,这个时候就须要对特定工程进行设置,通用的方式是使用svn的propedit:svn
$ svn propedit svn:ignore <dir>
要是只有个别项目,这样设置也就够了,可是对于管理不少项目就不是太方便,因而我本身写了一个脚本,先看脚本文件内容:工具
#!/bin/sh echo '.git\n.gitignore\n.hgignore\n.hgtags\n.idea .tags\ntags\n.travis.yml\n.ycm_extra_conf.py node_modules\nbuild' > .svnignore while [ -n "$1" ] do echo "$1" >> .svnignore shift 1 done svn propset svn:ignore -F .svnignore . svn ci -m 'ignoring some files' rm .svnignore
脚本先产生一个临时的相似于.gitignore
这样的文件,而后利用SVN的propset
方式来修改当前目录的忽略列表。
在脚本的最开始,将常常须要忽略的文件和目录名称放进去;在while
循环这个地方,接受命令行参数,将参数也放入忽略列表中;设置完毕以后提交入库。
例如,我将这个脚本文件命名为svn_ignores
,同时将脚本文件放置在/usr/local/bin/
的目录下(便于全局访问),进入到某个工程目录,这个工程目录当前的结构以下:ui
MyProject - bin - src - inc - thirdpart - build README.md tmp.txt
这里的build, tmp.txt
,我不想将它放到库中进行管理,因而在工程目录下执行:idea
$ svn_ignores build tmp.txt