Team Foundation Server:从 PolicyBase 对象获取变更集 ID

发布于 2024-12-11 18:32:19 字数 275 浏览 0 评论 0原文

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

我想要做的是提取将分配给签入的变更集编号。我在哪里以及如何获得这个号码?

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

TIA

I'm writing a custom check-in policy in Visual Studio 2010 using C#. I've extended the class PolicyBase and overriden the Evaluate() method so that I can check the user's check-in comment contains specific information. I'm getting the user's check-in comment using this.PendingCheckin.PendingChanges.Comment

What I would like to be able to do is pull out the changeset number that will be assigned to the check-in. Where and how would I get this number?

I'm guessing the Evaluate method is the wrong place because the changeset has been committed at that point and thus the changeset number cannot be determined.

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟燃烟灭 2024-12-18 18:32:19

您无法通过签到政策来确定这一点,因为它们仅在签入前进行评估。当您签入时,服务器会为您分配变更集。

您可以尝试通过查询 $/ 上的历史记录来推断下一个变更集编号(限制返回 1 个历史记录项)。但显然,如果你依赖这个值,你就会遇到竞争条件 - 有人可以很容易地在下一次签到时击败你,从而获取你认为下一个的号码。

也就是说,您可以在签到政策框架之外获取有关签到的数据。您可以CommitCheckin 事件连接到 Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer 的实例,或者您可以连接在签到时通知您的警报

You cannot do this with any degree of certainty with a check-in policy, as they are only evaluated pre-checkin. The server assigns you the changeset when you do the checkin.

You could try to deduce the next changeset number by querying history on $/ (with a limit of 1 history item returned). But obviously you will have a race condition if you depend on this value - someone could easily beat you to the next checkin, thus taking the number you think will be next.

That said, you can get data about check-ins outside of the check-in policy framework. You can either hook up a CommitCheckin event to an instance of Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer, or you can hook up an alert that will notify you when a check-in occurs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文