2012-03-30 45 views
8

一個blog狀態理解標籤限制

標籤都配備了大警告,雖然 - 標籤本身並不 版本控制,這意味着沒有辦法跟蹤或審計 歷史活動的標籤上。另外,如果文件被刪除,標籤不會保留 版本的副本,所以如果文件被刪除,任何依賴該文件版本的標籤基本上都會被清理。

這並非我唯一讀過有關TFS標籤的信息。缺乏足夠清晰的歷史。第二部分「標籤不保留版本的副本......」不清楚。實際上,我創建了一個測試項目>標記爲>刪除了一個文件>執行了一個按標籤獲取並且文件返回。那麼這是指什麼?最近TFS中的標籤功能是否已更改?

我意識到文件刪除並不會真正刪除歷史記錄,那是什麼原因?換句話說,如果我跑

TF消滅 「$/MyTeamProject /項目/ FileName.cs」

的意思是指刪除一個文件是什麼?如果是這樣,這似乎是一個特殊的情況下,甚至考慮。我的意思是,它是故意無法恢復的歷史刪除。在這種情況下,變更集不會比標籤有任何改進。

回答

2

當我們將一個標籤應用到某個時間點的源代碼控制版本時。直觀地說,因爲我們最初在某個時間點創建了源代碼控制的快照,所以可以假設快照代表某個時間點的源代碼。

這是不正確的。標籤可以在創建後進行編輯。

概念上,標籤定義了產品和產品的缺陷修復程序(source)。現實世界的例子可能會有幫助。假設我們有一款名爲AlphaBoogerBear的產品。 AlphaBoogerBear是一個產品,而不是一個版本(認爲預先發布的Windows名稱)。 AlphaBoogerBear可以製作成Label,AlphaBoogerBearLabel。我們執行AlphaBoogerBear的發佈。有一些錯誤。我們修復它們。

現在,我們回過頭去編輯AlphaBoogerBearLabel以包含錯誤修正。標籤不再代表某個時間點的快照。相反,它代表了AlphaBoogerBear最穩定的版本。

最後,我們轉到BetaBoogerBear。我們可以選擇返回,並及時獲取代表最佳版本的舊產品的標籤。

在我看來,如果需要快照版本的源代碼控制,最好是分支。如果需要表示產品版本的可編輯快照,則標籤很有用。儘管如此,這似乎是一種難以信任和便利的平衡。

就作者的意圖而言,我真的不能肯定地說。他可能會說,可以從標籤中刪除項目,因此當您通過標籤獲取時,項目將會消失。儘管如此,該項目仍然存儲在TFS歷史中,儘管這是一個令人困惑的情況,但並非全部都會丟失。

1

我不確定關於受文件刪除影響的標籤的句子是什麼意思。但是你說得對,一個普通的文件刪除不會影響標籤,但是破壞會。

不管是否受版本控制,它提醒你的是,有人可以通過包括或排除標籤中的文件或更改標籤中包含的文件版本來編輯標籤。這些標籤定義的變化將不會有歷史記錄。

0

據我所知,TFS中的標籤基本上是一套/集合變更集

假設你用一個包含兩個文件的目錄來標記它。標籤將包含三個變更集:一個用於目錄,另一個用於每個文件。在TFS中刪除其中一個文件將爲該目錄生成一個新的變更集,因此在這個階段執行Get by Label會將刪除的文件「返回」,因爲它包含刪除前的變更集。 銷燬一個文件會將其從它出現的任何變更集記錄中刪除,因此也會破壞標籤中的信息。

由於標籤僅由其名稱標識,因此使用新標籤覆蓋標籤並破壞舊信息也很容易。該命令的參數/child可以在某種程度上更改此行爲:使用/child:merge將保留之前與新記錄一起記錄的變更集,/child:replace將用新變更集替換舊變更集。在上面的示例中,這些替代方法都沒有任何區別,因爲按標籤獲取仍然會檢索最高的變更集。