由于現(xiàn)在的很多開發(fā)團隊變得越來越分散,類似微軟的Visual SourceSafe和Team Foundation Server這樣的集中式源代碼控制系統(tǒng)很快就失去了吸引力。在這種情況下,很多開發(fā)人員轉而使用分布式源代碼控制系統(tǒng)。在.NET開發(fā)人員當中,最流行的一款莫過于Git,它最初由Linus Torvalds為Linux內(nèi)核開發(fā)而創(chuàng)建。
使用Git的一個問題就是,大部分功能要通過命令行來操作。而.NET開發(fā)人員更習慣于使用用戶界面,所以在進行日常任務的時候不得不離開IDE的界面,確實讓人很不爽。這也就是為什么孫以義的Git Source Control Provider(Git源代碼控制提供器)成為采用Git的一個重要條件的原因。孫以義寫到:
作為一個Visual Studio用戶,我希望在解決方案管理器中看到文件的源代碼控制狀態(tài)。否則我不會覺得這些文件正在被某個源代碼管理系統(tǒng)所控制。在使用SourceSafe、Team Foundation Server、Subversion或甚至Mercurial的過程中,我們已經(jīng)非常習慣這種方式了。在使用Git的時候,我們也希望得到類似的體驗。在互聯(lián)網(wǎng)上我沒有找到任何有用的東西,所以只好決定自己弄一個。
基本想法就是顯示Git文件狀態(tài),并讓整個體驗和VSS和TFS盡可能接近。我讓已簽入(已提交/已跟蹤)的文件依舊顯示藍色的鎖定圖標,為已編輯的文件顯示紅色勾選圖標。也添加了兩種新圖標,黃色的加號和“i”狀圖標。它們分別代表新建和登臺(Staged)狀態(tài)。這兩個特殊類型的圖標只是Git所獨有。
使用這個插件打開Git所控制的解決方案,根據(jù)文件所處的是新建、已簽入、已編輯和待登臺的狀態(tài),而被清楚地進行不同標記。當前的Git分支名稱也會顯示出來,以便提醒你是否工作在正確的分支上。源代碼控制的感覺又回來了。
對于Visual Studio用戶而言,有兩個源代碼控制相關的功能是非常方便的,我也決定一并實現(xiàn)。它們是“和最后提交的版本進行文件比較”和“回滾文件變更(從最后提交的版本恢復文件)”。
這是一個令人激動的起點。我或許把它弄得有點花哨了,F(xiàn)在,我開始考慮,為什么我應該點右鍵來啟動Git的命令行,并輸入git init來創(chuàng)建新的本地代碼庫呢?我就不能僅僅點右鍵就選擇初始化一個新代碼庫嗎?
至少目前,這個插件還沒有打算代替或重復Git本身或Git Extensions這樣工具的功能。類似查看歷史、簽入/簽出、轉換分支將會依賴于Git Bash和Git Extensions的功能。最后,我將會很小心地添加一些常用的功能,比如init和commit等功能,不過通往Git和Git Extensions的大門就此打開了。
在問及Git是否可代替TFS來使用時,孫以義說這并無必要。“雖然TFS的源代碼控制不如Git這樣先進,但如若需要進行應用程序開發(fā)生命周期管理的話,TFS還是應該采用的。TFS對于包括開發(fā)人員、PM、BA和QA的整個團隊很有用處。”他繼續(xù)談到:
如果諸如靈活的分支、合并以及脫機開發(fā)這樣的現(xiàn)代源代碼控制特性確實需要的話,我當然就推薦大家使用Git。不過要知道,用TFS來進行ALM,而用Git來代替源代碼控制功能,還沒有辦法保證源代碼控制的簽入和WIT(TFS工作項)集成在一起。同時,Visual Studio對Git的工具支持也幾乎是空白。