已加入 Subversion 檔案庫的目錄可以加入忽略清單嗎?

在初次將專案的目錄結構匯入檔案庫時,通常會只放需要版本控管的檔案,然後從檔案庫取出一份 working copy,再將其他不需要版本控管的檔案加入 working copy,並將這些檔案加入 ignore list。如果用 TortoiseSVN,動作很簡單:開啟檔案總管,在欲忽略的檔案名稱上點右鍵 > TortoiseSVN > Add to ignore list,然後 commit 該檔案所屬的資料夾。這最後的 commit 資料夾的動作是必要的,因為 Subversion 的 ignore list 設定是跟著資料夾,而非設定在個別檔案上。

不過,在專案開發的過程中,往往後來才發現有些檔案或資料夾不應該加入檔案庫,卻已經「入庫」了,怎麼辦呢?

舉例來說,假設資料夾 Foo 底下有一個檔案:Hello.exe。檔案已經加入檔案庫。

如果你的情況是允許 Hello.exe 繼續留在檔案庫裡,但希望以後新加入 Foo 資料夾的檔案不要進入檔案庫,那就還是可以對 Foo 做 ignore list 設定:在 Foo 資料夾上點右鍵 > TortoiseSVN > Add to ignore list,然後按圖操作:



Propery value 可輸入任何檔名樣式,例如:*、*.*、*.tmp。若希望 Foo 資料夾的所有子資料夾也都一併忽略,可勾選 Apply property recursively。

如此一來,以後新加入 Foo 資料夾的檔案在 commit 時就不會列出來,也就不會進檔案庫了。至於 Hello.exe,由於它先前已經加入檔案庫,以後若有修改,在 commit 時便還是會列出來。

如果你想要將已加入版本控管的檔案從檔案庫中拿掉,那就只好先刪除 > commit,然後將檔案加入 working copy > 設定 ignore list > commit。

以上利用 TortoiseSVN 設定 ignore list 的動作也可以直接用 Subversion 命令列工具達成,例如:

svn propset svn:ignore "*.txt" Foo
svn propset svn:ignore "*" Temp
svn propset svn:ignore -F keyword.txt bin -R

-F 參數代表忽略清單要從後面的 keyword.txt 檔案指定,-R 參數代表將此設定套用至所有子資料夾。

在我的 ASP.NET 專案中,是把 web.config 加入 ignore list,並且分別製作開發環境和產品環境的 web.config 檔案,例如:web.config.Dev 和 web.config.Prod,而且這兩個檔案都有加入檔案庫。實際部署時,可依開發環境或產品環境複製正確的版本成為 web.config。方法很簡單,也挺管用。
Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor