我们开发了一个自定义签到策略插件,可以将签入事件捕获到客户端上的TFS 2013。这用于评估某些工作流状态并为签入生成有意义的注释。对于这些任务,检查用户为签入选择/关联的工作项的有效性,并使用工作项中的值来生成注释。这在Visual Studio领域非常有效。直到最近,TFS的所有签到都是通过Visual Studio 2013完成的。一个新团队加入了我们,他们使用XPA Magic。标准的XPA编辑器似乎利用TFS 2013的32位MSSCCI提供程序来执行TFS的检查和签入。 通过XPA编辑器检入代码时,使用以下对话框允许用户选择/关联他的工作项并添加注释。
不幸的是,当通过此对话框登记时,该功能不再起作用。我调试了插件项目,当通过此路由检查OUT时,调用Evaluate()函数并公开Microsoft.VisualStudio.TeamFoundation.VersionControl.PendingChanges.PendingChangesModelVS。但是,在检查IN时,不会调用Evaluate()函数。
在概念上是否可以捕获签入事件并获得与通过Visual Studio签入时相同(或类似)的结果?
客户端计算机在Windows 7上运行的Visual Studio Premium 2013连接到TFS 2013.Update3应用程序服务器。
-
-
嘿爱德华,
我不完全确定我正确地解释了你的回复,但是这里是: - )
我们的想法是在办理登机手续时建立一个评论,其中包含相关工作项目的详细信息(如WI编号,描述和其他一些自定义信息)。 在检入文件后,创建的更改集的注释将包含一些有用的信息。 注释(字符串)在签入时生成,然后在以下属性中设置: PendingCheckin.PendingChanges.Comment = newCheckinComment;
Full NameSpace: {Microsoft.VisualStudio.TeamFoundation.VersionControl.PendingChanges.PendingChangesModelVS} .PendingCheckin.PendingChanges.Comment
因此,我们需要在办理登机手续时在此处发表评论。在办理登机手续时,我们也确定至少有一个WI可以从中提取数据,因为这是强制执行的。
在调试中,我发现每次执行这些操作时都会触发以下事件:
在Windows资源管理器中通过上下文菜单“Team Foundation Server”在Checkout上。 (PendingCheckin.Policies.EvaluationState =未评估)
使用Visual Studio进行签到(PendingCheckin.Policies.EvaluationState = 已评估)
看到我们只对签到操作感兴趣,代码只响应:PendingCheckin.Policies.EvaluationState = Evaluated
public override PolicyFailure[] Evaluate()
{
PolicyFailure[] failures = null;
if (PendingCheckin.Policies.EvaluationState == PolicyEvaluationState.Evaluated)
{
InitConfiguration();
failures = CheckWorkitemStatus();
if (Util.ArePolicyFailuresOk(failures))
failures = ComposeCheckinComment();
if (Util.ArePolicyFailuresOk(failures)) //The setting of the comment -> PendingCheckin.PendingChanges.Comment = newCheckinComment , happen in this function.
failures = CheckFilesToCheckin();
}
return failures;
}
因为您可以看到问题出现,在Windows资源管理器中通过上下文菜单“Team Foundation Server”签入,从未到达Evaluate()函数,但是从同一个上下文菜单中签出... 希望它有意义!