2010-03-02 59 views
1

一點背景首先...TFS 2008:有關汽車的問題構建,標籤和普通版本

我設立了一個版本爲我們的項目目前只開發分支編號系統,但我們現在是走向我們的第一次部署。我們正在使用TFS,並且我們每晚都在我們的開發分支上使用。

我們可能要這樣做的方式是,當我們爲發佈做好準備時,我們將一個分支關閉,並將其稱爲1.x.這應該是一個測試分支:我們測試它,修復它(然後合併回dev),再測試一下,當它完好時,我們從1.x分支中取出另一個分支並將其稱爲1.0。這個分支被部署到生產環境中。生產中的任何修復都將被提交給1.x,並進行測試,然後創建一個新的分支1.1。

我的問題是與1.x分支的測試。測試之前,分支將被鎖定,原因很明顯。我的問題是,質量保證要求對「版本號」進行一輪測試,如果測試失敗,下一輪測試將針對新的「版本號」。我們的開發人員希望將「版本號」與版本綁定,並且測試可以迭代該版本......所以這裏有衝突。

我的第一個想法是使用內部版本號作爲代碼測試的時間點。當提交新版本進行測試時,1.x分支再次被鎖定,構建將被啓動,並且生成的VSTS編號將成爲「V1.0的釋放條件1」。將RC映射到構建版本,我們可以在電子表格中手動執行...

...然後有人提到標籤,並且應該在測試之前將代碼鎖定爲labled並構建。我之前從未使用標籤,並剛剛閱讀過構建本身在TFS中創建標籤。

我現在對什麼是最好的方式去這裏感到困惑。是否足夠使用發佈候選版本號?手動標記在這裏是否有任何用途(我能看到的唯一好處是我們可以給出它自己的名稱和描述)?我可以告訴TFS不要在運行構建時創建標籤,而只需在重要時間點完成所有標籤(例如,並非每個構建都將成爲發佈候選)?如果是這樣,每次構建一個壞主意後都不會創建一個標籤,那麼標籤給我什麼?

我想我感到困惑的地方changsets,內部版本號/名稱和標籤都適合彼此...

這是一個很寬泛的問題,但它的那些我不是100%肯定者之一要問什麼。任何幫助讚賞。

回答

2

...然後有人提到標籤,並且代碼應該在測試之前鎖定並標記。我之前從未使用標籤,並剛剛閱讀過構建本身在TFS中創建標籤。

你讀過的內容是正確的。有了TFS(不像SourceSafe),服務器動作構成了一個「已知的時間點」,稍後可以參考。你可以通過做一個Get Specific Version...並查看Version下拉列表來看看我的意思:在TFS 2005中,我看到的相關列表是Changeset,Date,Label。現在,正如您所說的,每個構建都會自動創建一個標籤。這意味着在將來的任何時候都可以像任何給定的變更集之後那樣精確地檢索代碼;在任何給定的日期;以及何時應用任何特定標籤,從而包括何時完成構建。

結果是,您可以使用自己的標籤或不使用自己的標籤,完全根據您自己的判斷 - 無論如何,檢索給定代碼快照的能力都將存在。我不會建議試圖阻止TFS爲每個版本生成一個標籤(我不知道這是否可能) - 標籤無需花費任何代價。

1

您的分支1.x是一個整合branch,其中將包含許多增量小的演變。
鎖定分支不是答案。

設置一個標籤(專門命名爲「QA測試」,並鎖定以便不能移動該標籤)是向QA團隊發出信號的常用方式,他們可以構建自己的工作區並檢索該確切標籤。
然後,他們可以對代碼開始他們的測試。
Creating a label後每個版本並不總是可行的,因爲不是每個建設旨在通過QA測試。

+0

「移動標籤」,這是什麼究竟意味着什麼呢?我得到的印象是,TFS中的標籤並不構成「時間點」,而是可以在標籤製作完成後對標籤代碼進行更改。我們希望在這種情況下標註爲「時間點」...這就是你爲什麼建議是否鎖定標籤? – MrLane 2010-03-04 01:08:16

+1

@mrlane:「移動標籤」:某些VCS允許移動標籤以引用另一個提交。在TFS中,由於標籤可以被編輯(http://stackoverflow.com/questions/545785/how-do-i-figure-out-which-changeset-a-label-in-tfs-was-applied-to), **如果用於QA,則不應對其進行編輯,否則QA不確定它正在測試**。因此,我的'標籤鎖定'評論,即使你不能真正鎖定標籤在TFS(只有文件) – VonC 2010-03-04 07:25:30