手冊

忽略檔案與目錄

圖 4.33. 未版本控制檔案的 Explorer 內容選單

Explorer context menu for unversioned files


在大多數專案中,您會有不應受版本控制約束的檔案和資料夾。這些可能包括編譯器建立的檔案,例如 *.obj, *.lst,也可能是用於儲存可執行檔的輸出資料夾。每當您提交變更時,TortoiseSVN 會顯示您未版本控制的檔案,這會填滿提交對話方塊中的檔案清單。當然,您可以關閉此顯示,但這樣您可能會忘記新增新的原始碼檔案。

避免這些問題的最佳方法是將衍生的檔案新增至專案的忽略清單。這樣它們永遠不會出現在提交對話方塊中,但真正的未版本控制的原始碼檔案仍然會被標記出來。

如果您按一下滑鼠右鍵單個未版本控制的檔案,並從內容選單中選取TortoiseSVN加入忽略清單命令,會出現一個子選單,讓您選擇僅該檔案,或所有具有相同副檔名的檔案。兩個子選單也都有一個 (遞迴) 對等選項。如果您選擇多個檔案,則不會有子選單,您只能加入這些特定的檔案/資料夾。

如果您選擇忽略內容選單的 (遞迴) 版本,則該項目不僅會針對選取的資料夾被忽略,也會針對所有子資料夾被忽略。但是,這需要 SVN 用戶端版本 1.8 或更高版本。

如果您想從忽略清單中移除一個或多個項目,按一下滑鼠右鍵這些項目,然後選取TortoiseSVN從忽略清單中移除。您也可以直接存取資料夾的 svn:ignore 屬性。這讓您可以指定更通用的模式,使用檔案名稱 globbing,如下節所述。請閱讀標題為「專案設定」的章節,以取得有關直接設定屬性的更多資訊。請注意,每個忽略模式都必須放在單獨的一行上。用空格分隔它們是無效的。

全域忽略清單

忽略檔案的另一種方法是將它們新增到全域忽略清單中。這裡最大的區別在於全域忽略清單是客戶端屬性。它適用於所有 Subversion 專案,但僅適用於客戶端電腦。一般來說,最好盡可能使用 svn:ignore 屬性,因為它可以應用於特定的專案區域,並且適用於每個簽出專案的人。請閱讀標題為「一般設定」的章節,以取得更多資訊。

忽略已版本控制的項目

已版本控制的檔案和資料夾永遠無法被忽略 - 這是 Subversion 的一項功能。如果您錯誤地版本控制了一個檔案,請閱讀標題為「忽略已版本控制的檔案」的章節,以取得關於如何取消版本控制它的說明。

忽略清單中的模式比對

Subversion 的忽略模式使用檔案名稱 globbing,這是一種最初在 Unix 中使用的技術,使用 Meta 字元作為萬用字元來指定檔案。以下字元具有特殊含義

*

比對任何字串,包括空字串(沒有字元)。

?

比對任何單個字元。

[...]

比對方括號中括起來的任何一個字元。在方括號內,以-分隔的一對字元比對詞彙上介於兩者之間的任何字元。例如,[AGm-p] 比對 AGmnop 中的任何一個。

模式比對區分大小寫,這可能會在 Windows 上造成問題。您可以強制不區分大小寫,方法是配對字元,例如,若要忽略 *.tmp 而不論大小寫,您可以使用類似 *.[Tt][Mm][Pp] 的模式。

如果您想要 globbing 的官方定義,您可以在 Shell 命令語言的 IEEE 規範 模式比對符號 中找到它。

全域忽略清單中沒有路徑

您不應在模式中包含路徑資訊。模式比對旨在用於純粹的檔案名稱和資料夾名稱。如果您想忽略所有 CVS 資料夾,只需將 CVS 新增到忽略清單即可。無需像早期版本中那樣指定 CVS */CVS。如果您想忽略所有 tmp 資料夾,當它們存在於 prog 資料夾內,但不存在於 doc 資料夾內時,您應該改用 svn:ignore 屬性。使用全域忽略模式無法可靠地實現此目的。

TortoiseSVN 首頁