方法一
如何使用svn忽略文件和文件夹
如果你之前尝试过git,你就知道svn的忽略在命令行上有多么繁琐。
我从事android开发,我希望svn可以这样忽略:
# Built application files
*.apk
*.ap_
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# Intellij
*.iml
.idea/workspace.xml
.idea/libraries
# Keystore files
*.jks
我本以为svn的忽略会很简单,但实际上达到最终的忽略效果花掉了我相当长的时间。所以在这做个记录,将我的经验分享一下。
SVN的ignore属性
svn通过属性来判断如何处理仓库中的文件。其中有一个属性便是svn:ignore。你可以使用 svn propset 来设置svn:ignore在单独的目录。你可以给svn:ignore设置一个值,文件名或者是表达式。
例如:
svn propset svn:ignore *.class .
这时你使用svn status命令,就看不到。class文件了。如果你也想查看忽略的文件,你可以输入:
svn status --no-ignore
忽略文件夹
忽略文件夹,千万不要加斜杠。
svn propset svn:ignore bin . # yes
svn propset svn:ignore /bin . # nope
svn propset svn:ignore bin/ . # nope
使用 —R 递归属性配置
使用上面的方法只能忽略当前目录,如果你想要自己的子文件夹也进行忽略 要使用-R惊醒操作。
svn propset svn:ignore -R *.class .
忽略多种类型的文件
通过以下的命令你可以忽略 *.class,*.apk, and Thumbs.db
svn propset svn:ignore -R *.class .
svn propset svn:ignore -R *.apk .
svn propset svn:ignore -R Thumbs.db .
或者,你可以这样:
svn propset svn:ignore -R "*.class
> *.apk
> Thumbs.db" .
使用-F通过配置文件来忽略
如android的,eclipse工程中需要忽略一些文件。
于是新建一个文本文档.svnignore并在其中写入:
build
bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex
然后执行:
svn propset svn:ignore -R -F .svnignore .
全局忽略完成。
注意事项
进行上述步骤之后,每个文件夹内的bin,gen等目录都会被忽略。所以起名字的时候不要起和忽略的名字相同的文件。
对忽略进行查看,删除
查看全部
svn status --no-ignore
查看指定目录
svn proplist -v [PATH]
删除忽略
svn status --no-ignore
额你以为到这里就结束了?
svn还有坑。。。
当你使用add的时候,千万不要使用
svn add *
这样会把忽略中的文件也添加到仓库。应该使用下面的命令行代替
svn add --force .
注意是点,千万别写成*
如果在忽略之前,文件应经被add,应先删除
svn delete [path]
只从svn中忽略,而不删除文件
svn delete --keep-local [path]
svn add后的数据如何 恢复/取消/还原
有时候你发现svn add后,这个提交的数据又不需要了。这时候需要有svn revert来处理了。
比如
A testcase/perday.php
如何取消呢?
svn revert testcase/perday.php
会出现下面的提示:
已恢复“testcase/perday.php”
说明脚本已经恢复了到原来的状态,不受SVN 版本控制了。
如何恢复整个目录??有时候你将整个目录都svn add了,整个目录有不同深度的文件夹,这时候你需要用其他方式来解决
svn revert --depth=infinity .
方法二
假设想忽略文件temp
1. cd到temp所在的目录下:
作为propset命令的补充,svn提供了一个propedit命令,这个命令使用定制的编辑器程序(见“配置”一节)来添加和修改属性。当你运行这个命令,svn调用你的编辑器程序打开一个临时文件,文件中保存当前的属性值(或者是空文件,如果你正在添加新的属性)。然后你只需要修改为你想要的值,保存临时文件,然后离开编辑器程序。
2. svn propedit svn:ignore .
注意:请别漏掉最后的点(.表示当前目录),如果报错请看下面
3. 打开的文件就是忽略列表文件了(默认是空的),每一行是一项,在该文件中输入temp,保存退出
4. svn st查看状态,temp的?状态已经消除了
svn add *
这样会把忽略中的文件也添加到仓库。应该使用下面的命令行代替
svn add --force .
如果在svn propedit svn:ignore .时报错:svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found
说明SVN的默认属性编辑器没有设置,设置方法如下:
vi ~/.bash_profile
在最后一行追加
export SVN_EDITOR=vim
保存退出,然后输入命令source ~/.bash_profile(使配置文件立即生效)
以上步骤完成后,继续按照上面的方法设置
一直不知道svn的忽略命令如何使用,经过google的查找,使用方法还是有的,做个记录好了。
如果想在SVN提交时,忽略某个文件,也就是某个文件不提交,可以使用
svn propedit svn:ignore命令。
下面详细介绍一下使用步骤。
单纯的看svn官方文档和一些网上搜索的资料,有时候真的不如亲自试验的好。
svn propedit svn:ignore 目录名称。
注意,在使用这个SVN的属性编辑前,你得确保后面的“目录名称”是SVN版本控制的目录。
如果要忽略此目录下的文件,可以如下操作。
比如,想忽略/product目录下的test.php文件。前提是/product目录必须在svn版本控制下,而test.php文件不在svn版本控制。
svn st先看一下状态,会显示如下:
? /product/test.php
我们需要将test.php文件加入忽略列表。
此时先设置SVN默认的编辑器
export SVN_EDITOR=vim
然后,使用svn propedit svn:ignore ,用法如下
svn propedit svn:ignore /product
此时会出现一个VIM的编辑窗口,表示需要将某个文件加入到忽略列表里
我们在编辑窗口中,写入
test.php
然后保存,并退出VIM编辑器。
这时候会有一个提示:属性 “svn:ignore” 于 “product” 被设为新值。
表示文件test.php的svn:ignore属性设置成功。
然后使用svn st查看,会显示:
M product
我们需要提交,然后这个svn:ignore属性才会起作用
svn ci -m '忽略test.php文件'
这时候,无论你如何修改test.php文件,再使用svn st时,也不会出现修改提示符合M了。
jpg改doc