博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在 Visual Studio 2012 控制 TFS 版控時要忽略哪些檔案
阅读量:6678 次
发布时间:2019-06-25

本文共 1896 字,大约阅读时间需要 6 分钟。

幾乎在任何一種版本控管的機制裡,都會遇到那些「不應該簽入到版本庫」的潛規則,以往我們在用 SVN 的時候,我就寫過要大家注意這點。最近都改用 TFS 做版控,因為大多使用 Visual Studio 作為主要開發工具,那些不需要的檔案被簽入 TFS 的機率大幅降低。但是,任何可能會發生的問題總是會發生 (),前陣子就真的有人把一堆不該簽入的檔案都簽入到 TFS 裡,不緊緊導致空間浪費,更進一步影響其他人建置專案,因此有在使用 TFS 的人還是必須注意一下。

首先,我們先來看看問題是怎樣發生的:

在 Visual Studio 2012 裡面進行版本控管,只要方案中所有專案的專案檔 ( *.csproj 或 *.vbproj ) 只要出現在檔案清單中的那些檔案,預設都會被加入到 TFS 版本庫裡,也代表著所有沒出現在檔案清單中的檔案,預設也會被排除在外,例如常見的 bin、obj 目錄,或是 *.csproj.user 使用者環境定義檔等等。

不過,在簽入檔案時,雖然有許多檔案沒有列在專案檔中,但這些檔案的確存在檔案總管理,至於要不要加入版控,就因人而異了,全看專案的需求而定。然而,也是因為這樣,導致初學者真的很難判斷,到底這些檔案應不應該加入到版本控管裡?若遇到「熱心」的開發人員,這些檔案就會進入版本控管中!

這些尚未被加入到原始碼控管行列中的檔案,預設在 Visual Studio 2012 都會被自動偵測出來,並置於如下圖標示的位置。這些檔案並不屬於排除的變更,而是被偵測出來也許可以加入到版控的檔案清單:

當你把這些檔案選取,並且按下 “升級" 按鈕,這些檔案就會被自動加入到 TFS 版本控制裡,直到你執行簽入動作 (Check-in),這些檔案就會進入到 TFS 版本控管裡。

 

要徹底解決這個問題,避免新手誤加了這些檔案進 TFS,你可以參考以下步驟:

1. 先從 Visual Studio 2012 開啟這些自動偵測出來的檔案清單,按下 Ctrl+A 全選後,按下滑鼠右鍵,然後點擊「忽略這些本機項目」,如下圖示:

2. 這時你會看到在「包含的變更」中,多出了一個 .tfignore 檔案,而且在「排除的變更」裡也看不到偵測到的檔案了。

3. 你可以用滑鼠雙擊 .tfignore 這個檔案,查看其內容,這個檔案會列出你剛剛設定「忽略這些本機項目」的檔案清單,不過還可以再優化忽略清單的內容:

以我這次示範的例子來說,這裡的 packages 目錄是 NuGet 存放 NuGet 套件的目錄,照理說可以不用放進版本控管,因為你只要在 Visual Studio 2012 裡設定啟用 NuGet 套件還原,就可以自動還原這些檔案,以減少版本控管的空間占用。

※ 相關文章請參考【】【】。

不過,用過的人一定知道,NuGet 套件會不斷更新,因此,如果要像這樣設定「忽略這些本機項目」的話,你不就每次更新 NuGet 套件都要再設定一次「忽略這些本機項目」,這太麻煩了!因次我們可以利用萬用字元 (Wildcard characters) 幫你把眾多忽略項目的設定濃縮成一個。以我們剛剛圖片上看到的例子,最後我們可以把內容濃縮到只剩下一行而已,如下:

\Web\packages\*

但是,我們又不是所有 packages 目錄下的所有檔案都要加入忽略清單,因為在 NuGet 套件管理員裡,packages\repositories.config 這個檔案是應該要加入版控的!

若要忽略 \Web\packages 資料夾下的所有檔案與目錄,但保留 \Web\packages\repositories.config 檔案的話,此時你可以將 .tfignore 檔案的內容修改成如下:

\Web\packages\*!\Web\packages\repositories.config

只要加入一個驚嘆號 ( ! ),就可以從忽略清單排除此條件。

 

除此之外,我額外再分享一個加入忽略清單的小技巧,因為我們都會安裝 來收錄 ASP.NET 網站執行過程中各種例外狀況,這些含有錯誤紀錄的 XML 檔都會儲存在 App_Data\Elmah.Errors 目錄裡,所以當在開發環境中也收錄到這些錯誤時,也切記不要加入到 TFS 版控之中,為了避免有人不小心加入,將這些錯誤紀錄的檔名規則加入到 .tfignore 檔案中也是有必要的,以下是加入範例,僅供參考:

\Web\WebSite\App_Data\Elmah.Errors\error-*.xml

转载地址:http://owiao.baihongyu.com/

你可能感兴趣的文章
SpringCloud学习成长 四 断路器(Hystrix)
查看>>
Inventory Pro 装备拾取的实现
查看>>
Using SQL Server 2012 T-SQL New Features(转载)
查看>>
hihocoder [Offer收割]编程练习赛8
查看>>
colpick-jQuery颜色选择器使用说明
查看>>
python基础之socket编程
查看>>
fastdfs_nginx整合
查看>>
winform中键盘和鼠标事件的捕捉和重写
查看>>
C#中IEnumerable、ICollection、IList、List之间的区别
查看>>
UIAlertView
查看>>
博客园美化资源网站链接
查看>>
xfs 文件系统损坏修复 fscheck
查看>>
区块链开发_以太坊多重签名
查看>>
hdu 2844(二进制+多重背包)
查看>>
LC.100.Same Tree
查看>>
通过javamail发送电子邮件
查看>>
数学分析半期考试
查看>>
Hibernate之一级缓存
查看>>
Python基础之定义有默认参数的函数
查看>>
443. String Compression - Easy
查看>>