在 TFS 中为某些用户注册自定义签入策略

Posted

技术标签:

【中文标题】在 TFS 中为某些用户注册自定义签入策略【英文标题】:Registering custom checkin policy for Certain users in TFS 【发布时间】:2014-09-19 12:20:21 【问题描述】:

我为 TFS 创建了自定义签入策略。它被部署到客户端系统。我在 TFS 中添加了项目集合的自定义签入策略。但是我有一些客户端没有安装自定义签入策略,当这些开发者想签入时,Visual Studio 会报错

Internal error in Check for PMS Details. Error loading the Check for PMS Details ...

所以我想为某些用户应用自定义签入策略。例如,用户是管理员,则无需运行自定义签入策略。

【问题讨论】:

【参考方案1】:

正如其他人所提到的,该策略需要安装在客户端计算机上才能工作。没有办法解决这个问题。但是,您可以在策略本身中检查执行签入的用户的身份和组成员身份,并在这种情况下跳过策略验证(始终返回一个空的 PolicyFailures 数组)。

我一直在制定这样的政策,但一直没有时间完成它。我一直在构建的策略与 TFS Power 工具中附带的 ConditionalPath 策略的工作方式相同。基本上,它包装了另一个(一组)规则并为其执行设置了条件。

【讨论】:

我将解释实际场景。在我们的组织中,使用我们自己的 PMS 应用程序进行项目管理。我们希望在 tfs(签入等)中执行任务时维护 PMS 应用程序的机制。根据您的建议,我已经实现了自定义签入策略。但问题是有时我们的客户会在他们身边做一些任务。那时如果没有安装签入策略,它会显示一些错误消息。有时客户不喜欢这种机制。请提出更好的解决方案 由于您希望在用户签入时显示 UI,因此这是允许您执行此操作的正常扩展点。您也许可以构建一个扩展团队资源管理器的自定义 VSPackage,但我不知道有任何示例可以作为该旅程的起点,除了这个:31og.com/post/… 和通知:ObservableCollection<TeamExplorerNotification> Microsoft.TeamFoundation.Controls.WPF.TeamExplorer.Framework.TeamExplorerViewModel跨度> 有没有办法在客户端监听 tfs 事件? 这不是一个很常见的解决方案,但是当您订阅 VersionControlClient 类的事件时它可能会起作用:msdn.microsoft.com/en-us/library/… 以监控签入。【参考方案2】:

自定义策略需要安装到客户端系统上,它们不是集中处理的。

签入策略只能在 TFS 内的项目级别范围内,据我所知,除非您在策略本身内处理此问题,否则您无法以任何其他方式限制策略。

【讨论】:

【参考方案3】:

必须在所有 TFS Windows 客户端上安装您的签入策略,否则会出现严重错误。

条件策略可以通过两种方式实现。

    在自定义策略代码中设置条件 使用门控签入构建并自定义构建模板

还有第三种选择,服务器端事件处理程序,但我通常不鼓励它。

【讨论】:

以上是关于在 TFS 中为某些用户注册自定义签入策略的主要内容,如果未能解决你的问题,请参考以下文章

TFS 策略 - 当代码不符合自定义准则时阻止签入

TFS 2015 - 自定义路径策略实施?

在TFS签入后自定义事件/操作

如何为 TFS 中组的特定用户提供签出和签入访问权限

是否有自动为您格式化代码的 TFS 签入策略?

TFS2010:如果存在代码分析警告,则阻止签入