使用svn進行檔案和資料夾的忽略兩種方法
方法一
如何使用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