Team Foundation Server:从PolicyBase对象获取Changeset Id

时间:2011-10-24 15:28:10

标签: visual-studio-2010 visual-studio-2008 tfs tfs2010 tfs2008

我正在使用C#在Visual Studio 2010中编写自定义签入策略。我已经扩展了PolicyBase类并重写了Evaluate()方法,以便我可以检查用户的签入注释是否包含特定信息。我正在使用this.PendingCheckin.PendingChanges.Comment获取用户的签到评论

我希望能够提取将分配给签到的变更集编号。我在哪里以及如何获得这个号码?

我猜测Evaluate方法是错误的,因为变更集已在该点提交,因此无法确定变更集编号。

TIA

1 个答案:

答案 0 :(得分: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