不少中小型項目,特別是公司的項目版本管控通常都仍是使用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