一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

TFS下的源代碼控制

 昵稱12324088 2013-05-15

以下主要描述了:

  1. TFS源代碼控制系統(tǒng)的基本場景
  2. 如何把一個項目添加到源代碼管理中
  3. 如何與服務(wù)器同步
  4. 如何做Check-In
  5. 如何做分支與合并
  6. 什么是上架與下架

我們知道工作項是項目管理的基本元素,但是一個項目的成功,光有工作項還是不夠的。工作項說明了要做什么事(例如任務(wù)),出了什么問題(例如Bug),除此之外,我們還需要將程序一行一行地寫出來,TFS的源代碼管理控制系統(tǒng),就能幫助我們管理這一行行的代碼,一個個的文件,一次次的修改,直到產(chǎn)品發(fā)布。

1、TFS源代碼控制系統(tǒng)的基本場景

這里介紹一下,如何在Visual Studio.net中使用源代碼控制系統(tǒng),我們知道Visual Studio IDE可以和Visual Source Safe等多種源代碼控制系統(tǒng)集成,所以我們首先需要選擇用什么來控制源代碼,這可以通過從IDE菜單中選擇“工具(Tools)”->“選項(Options)”,在選項對話框中,找到源代碼管理(Source Control | Plug-in),然后選擇Visual Studio Team Foundation Server:

clip_image002

2、如何把一個項目添加到源代碼管理中

首先,我們需要有一個團隊項目,下面我們以測試環(huán)境中已有的團隊項目TFSTest為例進行說明,當我們把一個源代碼項目添加到源代碼管理系統(tǒng)中時,Visual Studio會為你創(chuàng)建一個工作空間(Workspace)。

一個工作空間是服務(wù)器的文件、目錄在客戶端的映射。當用戶對源代碼管理中的目標進行增加、編輯、刪除、移動、重命名,或者其他操作時,用戶的修改會保留在工作空間中,標記為工作空間中的“待定/未提交修改”(Pending Change)。這些修改只有被用戶簽入(Check In)后,服務(wù)器上的文件或目錄才會跟著改變。

下面我們演示創(chuàng)建一個新的解決方案和項目,并將其添加到源代碼管理中:

在Visual Studio IDE中,創(chuàng)建一個新的項目,選中“添加到源代碼管理”(Add to Source Control):

clip_image004

集成環(huán)境在后臺開始創(chuàng)建項目的框架,然后會提示你,選擇將新建項目添加到TFS上的哪個Team Project中,這里,我們選擇TFSTest項目,點擊確定:

clip_image006

然后,我們打開菜單“視圖”->“其他窗口”->“源代碼管理資源管理器”:

clip_image008

就可以看到新添加到TFSTest團隊項目下的ITRequestFormPrj1了:

clip_image010

項目文件夾前面是一個黃色的+,代表這些都是Pending Change.

如果我們需要把現(xiàn)有的解決方案,或者項目添加到TFS中,那么可以打開這些解決方案或者項目,然后右鍵點擊解決方案,選擇“將解決方案添加到源代碼管理”:

clip_image012

然后在彈出的窗口中,選擇將解決方案添加到那個Team Project中。

現(xiàn)在我們試著編譯一下項目(模擬一下驗證代碼的正確性),然后就將這些Pending Change 簽入到TFS中,選擇“視圖”->“其他窗口”->“掛起的更改”:

clip_image014

就可以看到目前有哪些Pending Change:

clip_image016

然后點擊簽入按鈕,所有被選中的Pending Change文件都會被簽入。

下面我們看看,如果向已經(jīng)加入源代碼管理的項目中,添加一個文件,會是什么情況:

  • 首先,項目會被自動Check-Out(簽出),在項目前面有一個紅色的打鉤圖標(下面左圖)
  • 其次,新增的文件前面有一個黃色的+號,表示這是一個掛起修改的文件(下面右圖)

clip_image018clip_image020

先把Class1文件簽入,然后我們試著雙擊打開Class1.cs文件,輸入一行注釋,我們發(fā)現(xiàn)編輯文件后,文件會被自動簽出(Check-Out),由于文件被Check-Out,所以項目的狀態(tài)也更新成Check-Out了:

clip_image022

3、如何與服務(wù)器同步

在團隊協(xié)同工作的環(huán)境中,許多人都在修改同一個項目中的代碼,你需要把項目中最新的修改下載到本地。如下的操作,可以讓你的工作空間和服務(wù)器上的最新版本同步:

  • 在解決方案窗口中,選擇項目或者整個解決方案,右鍵點擊,選擇“獲取最新版本”

clip_image024

  • 在源代碼資源管理器中,選擇一個Team Project,可以將該團隊項目的最新版本同步到本地:

clip_image026

如果在上圖中,選擇一個Team Project下的某個解決方案文件夾,則可以針對某個解決方案獲取最新的版本。

在簽入你自己的代碼前,最好把服務(wù)器上最新的版本同步下來,這個過程需要解決可能的版本沖突問題,然后你要構(gòu)建項目,保證沒有問題后,再簽入代碼。這是為了盡量避免你簽入的代碼,導(dǎo)致在服務(wù)器和其他開發(fā)人員的機器上出現(xiàn)構(gòu)建失敗。

4、如何做Check-In

以下三種方法都可以做簽入(Check-In)

  • 在解決方案窗口中,右鍵點擊修改后的文件,然后選擇簽入

clip_image028

  • 在源代碼管理窗口中,右鍵點擊修改后的文件,然后選擇“簽入掛起的修改”

clip_image030

  • 在掛起的更改窗口中,選擇要簽入的文件后,點擊簽入按鈕:

clip_image032

這種方法可以讓我們做快速的簽入,默認情況下,所有被修改的文件,都會自動列出,根據(jù)需要確定要簽入的文件后,可以填寫簽入的注釋,對簽入的修改關(guān)聯(lián)對應(yīng)的工作項:

clip_image034

填寫代碼的相關(guān)審閱者:

clip_image036

查看簽入是否已經(jīng)滿足預(yù)定的策略:

clip_image038

當用戶選擇簽入后,所有選中的文件,簽入說明,以及與此次簽入相關(guān)聯(lián)的工作項,都將被存儲到數(shù)據(jù)庫中,作為一個新的更改集(Changeset)。一個更改集是文件版本、相關(guān)工作項、以及源代碼管理元數(shù)據(jù)(Metadata)組成的一個單獨的實體。

如果工作項有相關(guān)的流程處理規(guī)則,這些規(guī)則會修改工作項的狀態(tài)。例如,一個團隊可能會定義如下規(guī)則:如果當你簽入時管理了工作項,并選擇“簽入操作”為“解決”,則工作項會從“活動的”變?yōu)椤敖鉀Q”:

clip_image040

5、如何做分支與合并

TFS中支持分支的概念,所謂的分支(Branching,就是指把源代碼控制系統(tǒng)中的文件和目錄復(fù)制一份。分支能夠保持文件和目錄的歷史,并且能夠把舊的文件上的修改合并到新的文件上去。在新的分支上的修改,和原來的分支(一般稱為主分支)沒有任何關(guān)系。

合并(Merging是指把不同分支中的文件(文件、目錄、團隊項目)合并到一起。在合并操作中,一個分支是源分支,另一個是目的分支。源分支中包括了用戶想要合并的文件。

考慮下面這種情況:

clip_image042

在時間的要求下,我們可能要先發(fā)布一個版本,那么我們可以建立一個Release1的分支,然后主分支代碼和分支代碼同時繼續(xù)開發(fā)。在某個時刻,可以將兩個分支合并。

下面是分支應(yīng)用的另一種場景:

clip_image044

在功能細分的要求下,例如Visual Studio就分成好多個版本:Express 版本、標準版本、企業(yè)版、架構(gòu)師版等等。他們擁有共同的基礎(chǔ)功能,在這部分功能開發(fā)完成后,可以通過分支來實現(xiàn)不同版本對應(yīng)增值功能的開發(fā),例如從主代碼中分支出功能A、功能B

也有可能這些增值功能不是必須的,如果可以實現(xiàn),我們就合并到主代碼中,如果不能實現(xiàn),則取消合并。

通過上述的場景,可以看到分支為代碼管理提供了更佳的靈活性。

5.1創(chuàng)建分支操作演示

在Visual Studio中進行分支操作,十分方便,首先我們創(chuàng)建一個分支:

  • 在源代碼管理器窗口中,選中一個要對其進行分支的項目,例如下圖的ITRequestFormPrj1,然后右鍵點擊選擇“分支”:

clip_image046

  • 在這里,可以選擇分支的名稱、對主分支的最新版本還是指定版本進行分支,是否創(chuàng)建新分支的本地副本(也就是將新分支從TFS服務(wù)器上下載到本地工作區(qū)中)

clip_image048

  • 點擊確定按鈕后,開始創(chuàng)建分支的操作,創(chuàng)建成功后,我們在源代碼管理器窗口中,可以看到主分支和新分支之間有一個雙向箭頭的圖標表示了它們的關(guān)系:

clip_image050

5.1合并分支操作演示

我們先試著在新的分支中修改一下代碼,然后簽入修改,接下來我們演示合并分支的操作:

  • 在源代碼管理器窗口中,選擇一個分支,將其合并到主分支,右鍵點擊后,選擇“合并”:

clip_image052

  • 在源代碼管理合并向?qū)е校x中的分支作為源分支,目標分支會自動被識別出來:

clip_image054

  • 在上圖中,點擊下一步按鈕,向?qū)崾灸?,選擇源分支的哪個版本進行合并:

clip_image056

  • 確定以后,向?qū)崾灸憧赡苄枰鉀Q沖突:

clip_image058

點擊完成按鈕,如果合并的分支之間有沖突,則會提示你要先解決沖突后,才能合并:

clip_image060

點擊解決按鈕,提示Form1.cs文件存在沖突:

clip_image062

點擊比較按鈕,在比較窗口中,會顯示兩個分支中,同一個文件的差異:

clip_image064

在上一個窗口中,選擇“在合并工具中合并修改”,并點擊確定按鈕:

clip_image066

后臺會為你啟動合并工具,需要稍等片刻:

clip_image068

在合并工具中,可以選擇一邊的更改加以應(yīng)用,如果有多個不一致的地方,則可以通過“上一個更改”和“下一個更改”進行方便的導(dǎo)航:

clip_image070

選擇一個更改的內(nèi)容后,你還可以在最下面的編輯窗口中,進行最后的修改,然后點擊確定即可:

clip_image072

提示沖突已經(jīng)解決,是否保存文件,點擊是:

clip_image074

當所有沖突都已經(jīng)解決后,點擊關(guān)閉,退出沖突處理,完成合并操作:

clip_image076

這個時候,我們打開合并的目標分支,因為修改的內(nèi)容合并到了目標分支,目標分支的對應(yīng)文件處于掛起的更改“合并,編輯”,需要對其進行簽入操作,才能將最新的內(nèi)容提交到TFS服務(wù)器上:

clip_image078

6、什么是上架與下架

上架(Shelve)和下架(UnShelve命令聽起來不容易理解。我們不妨相像一下,你正在辦公桌上伏案畫圖,假設(shè)是用工筆畫紅樓夢群芳夜宴圖,大大小小的美女草圖鋪滿了桌面,這是你接到命令要做另外一件事:潑墨畫,而你只有一個辦公桌,萬一潑墨到美女們怎么辦?于是你就把目前的所有圖紙卷起來,放到書架上。這就相當于上架。

接下來你開始潑墨畫的工作。盡情揮灑之后,清理桌面,從書架上把剛才收起的圖紙都拿下來,鋪開,繼續(xù)你的群芳夜宴圖。這就相當于下架。

這兩個命令主要用于:

  • 保存目前的工作,切換到另一個任務(wù)
  • 其他人開始代碼復(fù)審(你將修改上架了,別人可以在自己的環(huán)境中,把你上架的內(nèi)容下架,然后做復(fù)審)
  • 集成別人的修改(兩人的修改互相依賴,這是可以通過上架/下架命令把修改集成起來)

這位多人協(xié)作提供一種便利:不需要每次Check-In,然后別人Check-Out,而是多次上架下架后,最后來一次Check-In即可。

上架的操作十分類似于簽入操作,在源代碼管理器中,右鍵點擊要上架的文件,選擇“擱置掛起的更改”即可:

clip_image080

所有的參數(shù)都與簽入操作類似,不同的是,修改不會做沖突檢查,也不會影響源代碼(即沒有真正被Check-In,這可以在上架操作結(jié)束后,驗證文件前面還有紅色打鉤標志來確認),而是暫時存儲在TFS服務(wù)器上,以便其他人做下架處理:

clip_image082

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    不卡中文字幕在线视频| 高清不卡一卡二卡区在线| 中文字幕免费观看亚洲视频| 熟女一区二区三区国产| 老鸭窝精彩从这里蔓延| 国产性色精品福利在线观看| 性欧美唯美尤物另类视频 | 中文字幕高清免费日韩视频| 国产av一区二区三区久久不卡| 日本一区不卡在线观看| 国产亚洲欧美自拍中文自拍| 国产欧美一区二区色综合| 亚洲精品国男人在线视频| 欧美大胆女人的大胆人体| 精品国产亚洲av久一区二区三区| 精品人妻一区二区三区四在线| 亚洲最新中文字幕在线视频| 一二区中文字幕在线观看| 国产中文字幕一区二区| 久久天堂夜夜一本婷婷| 国产韩国日本精品视频| 国产视频福利一区二区| 日本不卡在线视频中文国产| 亚洲专区中文字幕视频| 欧美成人高清在线播放| 冬爱琴音一区二区中文字幕| 国产午夜免费在线视频| 亚洲国产精品国自产拍社区| 精品一区二区三区中文字幕| 婷婷伊人综合中文字幕| 日韩人妻精品免费一区二区三区 | 91日韩在线视频观看| 黄片在线观看一区二区三区| 高潮日韩福利在线观看| 久七久精品视频黄色的| 欧美日韩亚洲国产av| 国产欧美日韩一级小黄片| 欧美精品在线播放一区二区| 亚洲一区二区精品福利| 亚洲视频一区自拍偷拍另类| 中文字幕久久精品亚洲乱码|