使用svn進行文件和文件夾的忽略

如何使用svn忽略文件和文件夾 若是你以前嘗試過git,你就知道svn的忽略在命令行上有多麼繁瑣。 我從事android開發,我但願svn能夠這樣忽略:php

# 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的忽略會很簡單,但實際上達到最終的忽略效果花掉了我至關長的時間。因此在這作個記錄,將個人經驗分享一下。android

SVN的ignore屬性

svn經過屬性來判斷如何處理倉庫中的文件。其中有一個屬性即是svn:ignore。你可使用 svn propset 來設置svn:ignore在單獨的目錄。你能夠給svn:ignore設置一個值,文件名或者是表達式。 例如:git

svn propset svn:ignore *.class .
複製代碼

這時你使用svn status命令,就看不到。class文件了。若是你也想查看忽略的文件,你能夠輸入:bash

svn status --no-ignore
複製代碼

忽略文件夾

忽略文件夾,千萬不要加斜槓。app

svn propset svn:ignore bin . # yes 
svn propset svn:ignore /bin . # nope 
 svn propset svn:ignore bin/ . # nope
複製代碼

使用 —R 遞歸屬性配置

使用上面的方法只能忽略當前目錄,若是你想要本身的子文件夾也進行忽略 要使用-R驚醒操做。eclipse

svn propset svn:ignore -R *.class .
複製代碼

忽略多種類型的文件

經過如下的命令你能夠忽略 *.class,*.apk, and Thumbs.dbide

svn propset svn:ignore -R *.class .  
svn propset svn:ignore -R *.apk .   
svn propset svn:ignore -R Thumbs.db .
複製代碼

或者,你能夠這樣:svn

svn propset svn:ignore -R "*.class > *.apk > Thumbs.db" .
複製代碼

使用-F經過配置文件來忽略

如android的,eclipse工程中須要忽略一些文件。 因而新建一個文本文檔.svnignore並在其中寫入:gradle

build
bin  
gen  
proguard  
.classpath  
.project  
local.properties  
Thumbs.db  
*.apk  
*.ap_  
*.class  
*.dex
複製代碼

而後執行:ui

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 .
複製代碼

參考資料: 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

相關文章
相關標籤/搜索