今天就跟大家聊聊有關(guān)源代碼控制工具TFS的入門是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、成都全網(wǎng)營(yíng)銷推廣、小程序制作、微信公眾號(hào)開發(fā)、成都網(wǎng)站營(yíng)銷服務(wù),提供專業(yè)營(yíng)銷思路、內(nèi)容策劃、視覺設(shè)計(jì)、程序開發(fā)來完成項(xiàng)目落地,為主動(dòng)防護(hù)網(wǎng)企業(yè)提供源源不斷的流量和訂單咨詢。
我們知道工作項(xiàng)是項(xiàng)目管理的基本元素,但是一個(gè)項(xiàng)目的成功,光有工作項(xiàng)還是不夠的。工作項(xiàng)說明了要做什么事(例如任務(wù)),出了什么問題(例如Bug),除此之外,我們還需要將程序一行一行地寫出來,TFS的源代碼管理控制系統(tǒng),就能幫助我們管理這一行行的代碼,一個(gè)個(gè)的文件,一次次的修改,直到產(chǎn)品發(fā)布。
這里介紹一下,如何在Visual Studio.net中使用源代碼控制系統(tǒng),我們知道Visual Studio IDE可以和Visual Source Safe等多種源代碼控制系統(tǒng)集成,所以我們首先需要選擇用什么來控制源代碼,這可以通過從IDE菜單中選擇“工具(Tools)”->“選項(xiàng)(Options)”,在選項(xiàng)對(duì)話框中,找到源代碼管理(Source Control | Plug-in),然后選擇Visual Studio Team Foundation Server:
首先,我們需要有一個(gè)團(tuán)隊(duì)項(xiàng)目,下面我們以測(cè)試環(huán)境中已有的團(tuán)隊(duì)項(xiàng)目TFSTest為例進(jìn)行說明,當(dāng)我們把一個(gè)源代碼項(xiàng)目添加到源代碼管理系統(tǒng)中時(shí),Visual Studio會(huì)為你創(chuàng)建一個(gè)工作空間(Workspace)。
一個(gè)工作空間是服務(wù)器的文件、目錄在客戶端的映射。當(dāng)用戶對(duì)源代碼管理中的目標(biāo)進(jìn)行增加、編輯、刪除、移動(dòng)、重命名,或者其他操作時(shí),用戶的修改會(huì)保留在工作空間中,標(biāo)記為工作空間中的“待定/未提交修改”(Pending Change)。這些修改只有被用戶簽入(Check In)后,服務(wù)器上的文件或目錄才會(huì)跟著改變。
下面我們演示創(chuàng)建一個(gè)新的解決方案和項(xiàng)目,并將其添加到源代碼管理中:
在Visual Studio IDE中,創(chuàng)建一個(gè)新的項(xiàng)目,選中“添加到源代碼管理”(Add to Source Control):
集成環(huán)境在后臺(tái)開始創(chuàng)建項(xiàng)目的框架,然后會(huì)提示你,選擇將新建項(xiàng)目添加到TFS上的哪個(gè)Team Project中,這里,我們選擇TFSTest項(xiàng)目,點(diǎn)擊確定:
然后,我們打開菜單“視圖”->“其他窗口”->“源代碼管理資源管理器”:
就可以看到新添加到TFSTest團(tuán)隊(duì)項(xiàng)目下的ITRequestFormPrj1了:
項(xiàng)目文件夾前面是一個(gè)黃色的+號(hào),代表這些都是Pending Change.
如果我們需要把現(xiàn)有的解決方案,或者項(xiàng)目添加到TFS中,那么可以打開這些解決方案或者項(xiàng)目,然后右鍵點(diǎn)擊解決方案,選擇“將解決方案添加到源代碼管理”:
然后在彈出的窗口中,選擇將解決方案添加到那個(gè)Team Project中。
現(xiàn)在我們?cè)囍幾g一下項(xiàng)目(模擬一下驗(yàn)證代碼的正確性),然后就將這些Pending Change 簽入到TFS中,選擇“視圖”->“其他窗口”->“掛起的更改”:
就可以看到目前有哪些Pending Change:
然后點(diǎn)擊簽入按鈕,所有被選中的Pending Change文件都會(huì)被簽入。
下面我們看看,如果向已經(jīng)加入源代碼管理的項(xiàng)目中,添加一個(gè)文件,會(huì)是什么情況:
首先,項(xiàng)目會(huì)被自動(dòng)Check-Out(簽出),在項(xiàng)目前面有一個(gè)紅色的打鉤圖標(biāo)(下面左圖)
其次,新增的文件前面有一個(gè)黃色的+號(hào),表示這是一個(gè)掛起修改的文件(下面右圖)
先把Class1文件簽入,然后我們?cè)囍p擊打開Class1.cs文件,輸入一行注釋,我們發(fā)現(xiàn)編輯文件后,文件會(huì)被自動(dòng)簽出(Check-Out),由于文件被Check-Out,所以項(xiàng)目的狀態(tài)也更新成Check-Out了:
在團(tuán)隊(duì)協(xié)同工作的環(huán)境中,許多人都在修改同一個(gè)項(xiàng)目中的代碼,你需要把項(xiàng)目中最新的修改下載到本地。如下的操作,可以讓你的工作空間和服務(wù)器上的最新版本同步:
在解決方案窗口中,選擇項(xiàng)目或者整個(gè)解決方案,右鍵點(diǎn)擊,選擇“獲取最新版本”
在源代碼資源管理器中,選擇一個(gè)Team Project,可以將該團(tuán)隊(duì)項(xiàng)目的最新版本同步到本地:
如果在上圖中,選擇一個(gè)Team Project下的某個(gè)解決方案文件夾,則可以針對(duì)某個(gè)解決方案獲取最新的版本。
在簽入你自己的代碼前,最好把服務(wù)器上最新的版本同步下來,這個(gè)過程需要解決可能的版本沖突問題,然后你要構(gòu)建項(xiàng)目,保證沒有問題后,再簽入代碼。這是為了盡量避免你簽入的代碼,導(dǎo)致在服務(wù)器和其他開發(fā)人員的機(jī)器上出現(xiàn)構(gòu)建失敗。
以下三種方法都可以做簽入(Check-In)
在解決方案窗口中,右鍵點(diǎn)擊修改后的文件,然后選擇簽入
在源代碼管理窗口中,右鍵點(diǎn)擊修改后的文件,然后選擇“簽入掛起的修改”
在掛起的更改窗口中,選擇要簽入的文件后,點(diǎn)擊簽入按鈕:
這種方法可以讓我們做快速的簽入,默認(rèn)情況下,所有被修改的文件,都會(huì)自動(dòng)列出,根據(jù)需要確定要簽入的文件后,可以填寫簽入的注釋,對(duì)簽入的修改關(guān)聯(lián)對(duì)應(yīng)的工作項(xiàng):
填寫代碼的相關(guān)審閱者:
查看簽入是否已經(jīng)滿足預(yù)定的策略:
當(dāng)用戶選擇簽入后,所有選中的文件,簽入說明,以及與此次簽入相關(guān)聯(lián)的工作項(xiàng),都將被存儲(chǔ)到數(shù)據(jù)庫(kù)中,作為一個(gè)新的更改集(Changeset)。一個(gè)更改集是文件版本、相關(guān)工作項(xiàng)、以及源代碼管理元數(shù)據(jù)(Metadata)組成的一個(gè)單獨(dú)的實(shí)體。
如果工作項(xiàng)有相關(guān)的流程處理規(guī)則,這些規(guī)則會(huì)修改工作項(xiàng)的狀態(tài)。例如,一個(gè)團(tuán)隊(duì)可能會(huì)定義如下規(guī)則:如果當(dāng)你簽入時(shí)管理了工作項(xiàng),并選擇“簽入操作”為“解決”,則工作項(xiàng)會(huì)從“活動(dòng)的”變?yōu)椤敖鉀Q”:
TFS中支持分支的概念,所謂的分支(Branching),就是指把源代碼控制系統(tǒng)中的文件和目錄復(fù)制一份。分支能夠保持文件和目錄的歷史,并且能夠把舊的文件上的修改合并到新的文件上去。在新的分支上的修改,和原來的分支(一般稱為主分支)沒有任何關(guān)系。
合并(Merging)是指把不同分支中的文件(文件、目錄、團(tuán)隊(duì)項(xiàng)目)合并到一起。在合并操作中,一個(gè)分支是源分支,另一個(gè)是目的分支。源分支中包括了用戶想要合并的文件。
考慮下面這種情況:
在時(shí)間的要求下,我們可能要先發(fā)布一個(gè)版本,那么我們可以建立一個(gè)Release1的分支,然后主分支代碼和分支代碼同時(shí)繼續(xù)開發(fā)。在某個(gè)時(shí)刻,可以將兩個(gè)分支合并。
下面是分支應(yīng)用的另一種場(chǎng)景:
在功能細(xì)分的要求下,例如Visual Studio就分成好多個(gè)版本:Express 版本、標(biāo)準(zhǔn)版本、企業(yè)版、架構(gòu)師版等等。他們擁有共同的基礎(chǔ)功能,在這部分功能開發(fā)完成后,可以通過分支來實(shí)現(xiàn)不同版本對(duì)應(yīng)增值功能的開發(fā),例如從主代碼中分支出功能A、功能B
也有可能這些增值功能不是必須的,如果可以實(shí)現(xiàn),我們就合并到主代碼中,如果不能實(shí)現(xiàn),則取消合并。
通過上述的場(chǎng)景,可以看到分支為代碼管理提供了更佳的靈活性。
在Visual Studio中進(jìn)行分支操作,十分方便,首先我們創(chuàng)建一個(gè)分支:
在源代碼管理器窗口中,選中一個(gè)要對(duì)其進(jìn)行分支的項(xiàng)目,例如下圖的ITRequestFormPrj1,然后右鍵點(diǎn)擊選擇“分支”:
在這里,可以選擇分支的名稱、對(duì)主分支的最新版本還是指定版本進(jìn)行分支,是否創(chuàng)建新分支的本地副本(也就是將新分支從TFS服務(wù)器上下載到本地工作區(qū)中)
點(diǎn)擊確定按鈕后,開始創(chuàng)建分支的操作,創(chuàng)建成功后,我們?cè)谠创a管理器窗口中,可以看到主分支和新分支之間有一個(gè)雙向箭頭的圖標(biāo)表示了它們的關(guān)系:
我們先試著在新的分支中修改一下代碼,然后簽入修改,接下來我們演示合并分支的操作:
在源代碼管理器窗口中,選擇一個(gè)分支,將其合并到主分支,右鍵點(diǎn)擊后,選擇“合并”:
在源代碼管理合并向?qū)е?,選中的分支作為源分支,目標(biāo)分支會(huì)自動(dòng)被識(shí)別出來:
在上圖中,點(diǎn)擊下一步按鈕,向?qū)?huì)提示你,選擇源分支的哪個(gè)版本進(jìn)行合并:
確定以后,向?qū)崾灸憧赡苄枰鉀Q沖突:
點(diǎn)擊完成按鈕,如果合并的分支之間有沖突,則會(huì)提示你要先解決沖突后,才能合并:
點(diǎn)擊解決按鈕,提示Form1.cs文件存在沖突:
點(diǎn)擊比較按鈕,在比較窗口中,會(huì)顯示兩個(gè)分支中,同一個(gè)文件的差異:
在上一個(gè)窗口中,選擇“在合并工具中合并修改”,并點(diǎn)擊確定按鈕:
后臺(tái)會(huì)為你啟動(dòng)合并工具,需要稍等片刻:
在合并工具中,可以選擇一邊的更改加以應(yīng)用,如果有多個(gè)不一致的地方,則可以通過“上一個(gè)更改”和“下一個(gè)更改”進(jìn)行方便的導(dǎo)航:
選擇一個(gè)更改的內(nèi)容后,你還可以在最下面的編輯窗口中,進(jìn)行最后的修改,然后點(diǎn)擊確定即可:
提示沖突已經(jīng)解決,是否保存文件,點(diǎn)擊是:
當(dāng)所有沖突都已經(jīng)解決后,點(diǎn)擊關(guān)閉,退出沖突處理,完成合并操作:
這個(gè)時(shí)候,我們打開合并的目標(biāo)分支,因?yàn)樾薷牡膬?nèi)容合并到了目標(biāo)分支,目標(biāo)分支的對(duì)應(yīng)文件處于掛起的更改“合并,編輯”,需要對(duì)其進(jìn)行簽入操作,才能將最新的內(nèi)容提交到TFS服務(wù)器上:
上架(Shelve)和下架(UnShelve)命令聽起來不容易理解。我們不妨相像一下,你正在辦公桌上伏案畫圖,假設(shè)是用工筆畫紅樓夢(mèng)群芳夜宴圖,大大小小的美女草圖鋪滿了桌面,這是你接到命令要做另外一件事:潑墨畫,而你只有一個(gè)辦公桌,萬一潑墨到美女們?cè)趺崔k?于是你就把目前的所有圖紙卷起來,放到書架上。這就相當(dāng)于上架。
接下來你開始潑墨畫的工作。盡情揮灑之后,清理桌面,從書架上把剛才收起的圖紙都拿下來,鋪開,繼續(xù)你的群芳夜宴圖。這就相當(dāng)于下架。
這兩個(gè)命令主要用于:
保存目前的工作,切換到另一個(gè)任務(wù)
其他人開始代碼復(fù)審(你將修改上架了,別人可以在自己的環(huán)境中,把你上架的內(nèi)容下架,然后做復(fù)審)
集成別人的修改(兩人的修改互相依賴,這是可以通過上架/下架命令把修改集成起來)
這位多人協(xié)作提供一種便利:不需要每次Check-In,然后別人Check-Out,而是多次上架下架后,最后來一次Check-In即可。
上架的操作十分類似于簽入操作,在源代碼管理器中,右鍵點(diǎn)擊要上架的文件,選擇“擱置掛起的更改”即可:
所有的參數(shù)都與簽入操作類似,不同的是,修改不會(huì)做沖突檢查,也不會(huì)影響源代碼(即沒有真正被Check-In,這可以在上架操作結(jié)束后,驗(yàn)證文件前面還有紅色打鉤標(biāo)志來確認(rèn)),而是暫時(shí)存儲(chǔ)在TFS服務(wù)器上,以便其他人做下架處理:
看完上述內(nèi)容,你們對(duì)源代碼控制工具TFS的入門是怎樣的有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。