1. 程式人生 > >使用svn進行檔案和資料夾的忽略兩種方法

使用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