TFS API:请求审查 C# 中的变更集
TFS API: Request Review on Changeset in C#
在 Visual Studio 中,我通常通过源代码管理资源管理器打开变更集,通过转到变更集打开变更集,然后在团队资源管理器中 select Actions->Request Review window where显示变更集。
在 C# 中,我有可以查询所有变更集的代码:
VersionControlServer vcs = tpc.GetService<VersionControlServer>();
vcs.QueryHistory(...)
现在我有一个变更集实例列表。
如何实现 "Request Review" 功能?
我尝试像这样创建代码审查请求:
Project teamProject = _workItemStore.Projects["XYZ"];
WorkItemType workItemType = teamProject.WorkItemTypes["Code Review Request"];
var request = new WorkItem(workItemType) { Title = "Testreview" };
request.Fields["Associated Context Type"].Value = "Changeset";
request.Fields["Associated Context"].Value = "5169";
request.Fields["Assigned To"].Value = "Joe Doe";
request.AreaPath = @"XYZ\Test";
request.IterationPath = @"XYZ\Test.5";
request.Save();
这会创建一个与 Visual Studio 中的请求非常相似的代码审查请求,但无法执行代码审查。我错过了什么?
据我所知,您正在使用包 Microsoft.TeamFoundationServer.ExtendedClient
。您的方向是正确的,但您还需要一项名为 Code Review Response
的工作项。这两个工作项的创建参考博客postTfs Extensibility - Automatically Create Code Reviews on Checkin。 post 在工作项字段值方面对我帮助很大。这是 post:
中的基本代码部分
var type = project.WorkItemTypes["Code Review Response"];
var workItem = new WorkItem(type) { Title = checkinNotification.Comment };
workItem.Fields["System.AssignedTo"].Value = "Betty"; //todo pick someone better
workItem.Fields["System.State"].Value = "Requested";
workItem.Fields["System.Reason"].Value = "New";
var result = workItem.Validate();
foreach (Field item in result)
{
//insert some form of logging here
}
workItem.Save();
var responseId = workItem.Id;
type = project.WorkItemTypes["Code Review Request"];
workItem = new WorkItem(type) { Title = checkinNotification.Comment };
workItem.Fields["System.AssignedTo"].Value = checkinNotification.ChangesetOwner.DisplayName;
workItem.Fields["Microsoft.VSTS.CodeReview.ContextType"].Value = "Changeset";
workItem.Fields["Microsoft.VSTS.CodeReview.Context"].Value = checkinNotification.Changeset;
workItem.Fields["System.AreaPath"].Value = project.Name; //todo: may want a better location from source path
workItem.Fields["System.IterationPath"].Value = project.Name;
workItem.Fields["System.State"].Value = "Requested";
workItem.Fields["System.Reason"].Value = "New";
WorkItemLinkTypeEnd linkTypeEnd = workitemStore.WorkItemLinkTypes.LinkTypeEnds["Child"];
workItem.Links.Add(new RelatedLink(linkTypeEnd, responseId));
workItem.Save();
代码审查的实际评论使用讨论服务(参见Creating code review request through API). Microsoft documentation on the disscusion service: Microsoft.TeamFoundation.Discussion.Client。
在此命名空间中,查看 class DiscussionThread
希望对您有所帮助。
在 Visual Studio 中,我通常通过源代码管理资源管理器打开变更集,通过转到变更集打开变更集,然后在团队资源管理器中 select Actions->Request Review window where显示变更集。
在 C# 中,我有可以查询所有变更集的代码:
VersionControlServer vcs = tpc.GetService<VersionControlServer>();
vcs.QueryHistory(...)
现在我有一个变更集实例列表。 如何实现 "Request Review" 功能?
我尝试像这样创建代码审查请求:
Project teamProject = _workItemStore.Projects["XYZ"];
WorkItemType workItemType = teamProject.WorkItemTypes["Code Review Request"];
var request = new WorkItem(workItemType) { Title = "Testreview" };
request.Fields["Associated Context Type"].Value = "Changeset";
request.Fields["Associated Context"].Value = "5169";
request.Fields["Assigned To"].Value = "Joe Doe";
request.AreaPath = @"XYZ\Test";
request.IterationPath = @"XYZ\Test.5";
request.Save();
这会创建一个与 Visual Studio 中的请求非常相似的代码审查请求,但无法执行代码审查。我错过了什么?
据我所知,您正在使用包 Microsoft.TeamFoundationServer.ExtendedClient
。您的方向是正确的,但您还需要一项名为 Code Review Response
的工作项。这两个工作项的创建参考博客postTfs Extensibility - Automatically Create Code Reviews on Checkin。 post 在工作项字段值方面对我帮助很大。这是 post:
var type = project.WorkItemTypes["Code Review Response"];
var workItem = new WorkItem(type) { Title = checkinNotification.Comment };
workItem.Fields["System.AssignedTo"].Value = "Betty"; //todo pick someone better
workItem.Fields["System.State"].Value = "Requested";
workItem.Fields["System.Reason"].Value = "New";
var result = workItem.Validate();
foreach (Field item in result)
{
//insert some form of logging here
}
workItem.Save();
var responseId = workItem.Id;
type = project.WorkItemTypes["Code Review Request"];
workItem = new WorkItem(type) { Title = checkinNotification.Comment };
workItem.Fields["System.AssignedTo"].Value = checkinNotification.ChangesetOwner.DisplayName;
workItem.Fields["Microsoft.VSTS.CodeReview.ContextType"].Value = "Changeset";
workItem.Fields["Microsoft.VSTS.CodeReview.Context"].Value = checkinNotification.Changeset;
workItem.Fields["System.AreaPath"].Value = project.Name; //todo: may want a better location from source path
workItem.Fields["System.IterationPath"].Value = project.Name;
workItem.Fields["System.State"].Value = "Requested";
workItem.Fields["System.Reason"].Value = "New";
WorkItemLinkTypeEnd linkTypeEnd = workitemStore.WorkItemLinkTypes.LinkTypeEnds["Child"];
workItem.Links.Add(new RelatedLink(linkTypeEnd, responseId));
workItem.Save();
代码审查的实际评论使用讨论服务(参见Creating code review request through API). Microsoft documentation on the disscusion service: Microsoft.TeamFoundation.Discussion.Client。 在此命名空间中,查看 class DiscussionThread
希望对您有所帮助。