2012-04-19 37 views
3

我進入我的.subversion/config並添加.settings,但從svn diff,我們看到它是行不通的。SVN全球忽略不工作(從其他崗位的解決方案不工作)

~/Space/ifp-integration/CIGNA-IFP-ESB$ svn diff 
Index: .settings/org.eclipse.jdt.core.prefs 
=================================================================== 
--- .settings/org.eclipse.jdt.core.prefs (revision 2014) 
+++ .settings/org.eclipse.jdt.core.prefs (working copy) 
@@ -1,6 +1,15 @@ 

這說明肯定有人在查,但我不在乎,因爲我想忽視它無論哪種方式。有沒有辦法確保它被忽略?

+0

在Windows上,文件'config'是'%APPDATA%\ Subversion \ config'。例如。 'C:\ Documents and Settings \ Peter \ Application Data \ Subversion \ config'。 – 2016-11-29 18:29:14

回答

5

你不能忽視的東西,在你的資料庫。這不是在Subversion中忽略的工作。

忽略僅僅是爲了防止意外加入文件到存儲庫的方式。如果存儲庫中已存在文件,則不能忽略它。

全球忽略只適用於文件,而不是目錄。如果你說忽略你的Subversion配置文件.settings,它不會忽略一個名爲.settings目錄,但只有一個名爲.settings。而且,它只會忽略.settings文件,如果該文件不在存儲庫中。

基本上,如果你說svn add *svn status,不在版本庫中的文件,您搜索全局忽略圖案不會被添加在svn status所示。就是這樣。

您可以創建一個名爲svn:ignore目錄類似的屬性。但svn:ignore也會忽略目錄。例如,如果你有一個Maven項目,可以設置svn:ignore = target和目標文件夾將不被報告。但svn:ignore僅適用於屬性所在的目錄,而不適用於子目錄。

所以你怎麼能忽略.settings目錄?簡單:你不檢查它。不幸的是,在Subversion中沒有簡單的方法。這裏是你可以做什麼:

$ svn checkout --depth=immediates http://server/src/myproj 

這將檢查所有在您的工作目錄中的文件夾和文件,但沒有任何子目錄。在Kornshell和BASH(如果設置shopt -s extglob):

$ svn update --set-depth=infinity !(.settings) 

這將繼續在所有目錄的結帳除了.settings目錄。

你也可以這樣做:

$ svn update --set-depth=exclude .settings 

刪除.settings目錄一旦它已經簽出。這不會從資源庫中刪除.settings目錄,但它會從你的工作目錄中刪除.settings目錄,並svn diff您的工作目錄(而不是庫的URL)將不報到的.settings下的任何內容。

的一點大重要的一點,我需要強調的是:只有忽略防止意外添加文件到您的存儲庫。它不會阻止某人添加它,並且一旦它在那裏,它就不會被忽略。

此外,您的全局忽略設置對所有人都不是全球性的。只是給你。如果您想阻止人們添加不應添加到存儲庫的文件,則需要預先提交鉤子,如this one

這個鉤子可以用來防止與特定名稱的文件或目錄被提交,也可以用來確保對文件和目錄的屬性設置。例如,您可能需要確保人們無法在項目中添加.settings目錄。或者目錄上的svn:ignore屬性設置爲忽略.settings目錄。