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