svn:ignore 的用处
用svn管理代码,一直以来都受到一件不爽事情的困扰:
1)有些文件或文件夹不想在commit的时候看到,虽然他们是non-versioned,比如*.bak.*.class,*.scc(vss文件),目录比如bin/, classes/,还有一些是eclipse之类开发工具生成的文件
2)当错误的将以上那些不想看到的文件加入svn后,该怎么忽略它们
google了一下svn ignore,看到了些方法:
转自http://www.svn8.com/SVNSY/20090405/4410.html 写道
若想创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容:
$ svn mkdir spool
$ svn propset svn:ignore '*' spool
$ svn ci -m 'Adding "spool" and ignoring its contents.'
若想创建一个文件夹,但不加入版本控制,即忽略这个文件夹:
$ mkdir spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'
若已经创建了文件夹,并加入了版本控制,现在想忽略这个文件夹,但要保持文件夹的内容:
$ svn export spool spool-tmp
$ svn rm spool
$ svn ci -m 'Removing inadvertently added directory "spool".'
$ mv spool-tmp spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'
$ svn mkdir spool
$ svn propset svn:ignore '*' spool
$ svn ci -m 'Adding "spool" and ignoring its contents.'
若想创建一个文件夹,但不加入版本控制,即忽略这个文件夹:
$ mkdir spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'
若已经创建了文件夹,并加入了版本控制,现在想忽略这个文件夹,但要保持文件夹的内容:
$ svn export spool spool-tmp
$ svn rm spool
$ svn ci -m 'Removing inadvertently added directory "spool".'
$ mv spool-tmp spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'
我看了网上关于svn:ignore的介绍, 说对于没有加入版本控制的,可以直接设定成ignore,但不能对加入版本控制的文件和目录这么做。解决办法是,先删除再ignore, 上面的命令其实也是这个方式,只不过有导出再mv的过程。
命令行方式固然好,但我用的是tortoisesvn,界面操作更加人性化和easy。tortoisesvn下页可以类似的这么做:
1)找到这些文件,直接右键,add to ignore list, 之后可以选择by name,by extention, 选择by extention就能忽略同类文件了。
2)直接在命令模式del /s *.bak ,先把*.bak在本地工作目录删除掉,然后再commit;看需要,再将*.bak 加入ignore