如何使用svn忽略文件和文件夾
如果你之前嘗試過git,你就知道svn的忽略在命令行上有多么繁瑣。
我從事android開發(fā),我希望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
然后執(zhí)行:
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后的數(shù)據(jù)如何 恢復/取消/還原
有時候你發(fā)現(xiàn)svn add后指巡,這個提交的數(shù)據(jù)又不需要了淑履。這時候需要有svn revert來處理了。
比如
A testcase/perday.php
如何取消呢厌处?
svn revert testcase/perday.php
會出現(xiàn)下面的提示:
已恢復“testcase/perday.php”
說明腳本已經恢復了到原來的狀態(tài)鳖谈,不受SVN 版本控制了。
如何恢復整個目錄阔涉?缆娃?有時候你將整個目錄都svn add了,整個目錄有不同深度的文件夾瑰排,這時候你需要用其他方式來解決
svn revert --depth=infinity .
參考資料:
http://stackoverflow.com/questions/116074/how-do-i-ignore-a-directory-with-svn
http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/
https://www.coder4.com/archives/4244