2011-10-24 27 views
1

我正在使用C#在Visual Studio 2010中編寫自定義簽入策略。我已經擴展了PolicyBase類並覆蓋了Evaluate()方法,以便我可以檢查用戶的簽入註釋是否包含特定的信息。我收到用戶的簽到評論使用this.PendingCheckin.PendingChanges.CommentTeam Foundation Server:從PolicyBase對象獲取變更集標識

我想能做的是拉出將被分配到登機手續的變更集號碼。我在哪裏以及如何得到這個號碼?

我猜Evaluate方法是錯誤的地方,因爲變更集已經提交,因此變更集編號無法確定。

TIA

回答

2

不能與簽入策略的任何程度的確定性做到這一點,因爲他們只評估預籤。服務器在您簽入時爲您分配變更集。

您可以嘗試通過查詢$ /上的歷史記錄來推斷下一個變更集編號(限制返回1個歷史記錄)。但是,如果你依賴這個價值,顯然你會有一個競爭條件 - 有人可以很容易地打敗你到下一個簽入,從而把你認爲會接下來的數字。

也就是說,您可以在辦理登機手續政策框架以外獲得有關辦理登機手續的數據。您可以選擇hook up a CommitCheckin event to an instance of Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer,也可以掛上an alert that will notify you when a check-in occurs

+0

這種不確定性會使它不適合我的目的。我發現奇怪的是,沒有辦法通過簽入政策或其他技術來獲得這一點。 – millie

+0

爲什麼它很奇怪?它**完全不可知**。簽入政策運行 - 字面上 - 在您進行待處理更改之後。他們不僅在您辦理登機手續之前進行評估。 (即使他們是**,他們**仍然無法確切地知道變更集的數量,因爲仍然存在競爭狀況,只有一個窗口更小)。 –

+0

我知道Evaluate方法只能得到在辦理登機手續前打電話,但我會假設在辦理登機手續時會有一些其他方法暴露出來,從而爲您提供保證的變更集號碼。這個鉤子不存在的事實是我發現奇怪的。 – millie