TFS 2010:如何使用标签在应用程序的两个版本之间生成变更日志(即工作项列表)? [英] TFS 2010: How to produce a changelog (ie. list of work items) between two releases of the application using labels?

查看:12
本文介绍了TFS 2010:如何使用标签在应用程序的两个版本之间生成变更日志(即工作项列表)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种在我的应用程序的两个版本之间自动生成变更日志(实际上是工作项列表)的方法.我的应用程序有两个版本,v1 和 v2,每个版本都由我在构建应用程序设置之前手动创建的 TFS 2010(LABEL1 和 LABEL2)中的标签标识.我有一个分支系统,这意味着我有一个主干,其中大部分错误都得到了修复,一个分支应用补丁主要使用来自主干的合并(但也有一些仅在分支上的修复与主干无关).我的应用程序的两个版本(v1 和 v2)是来自分支的版本.

I'm looking for a way to automatically produce a changelog (actually a list of workitems) between two releases of my application. I have two versions of my application, v1 and v2, each is identified by a label in TFS 2010 (LABEL1 and LABEL2) that I manually created before building the setups of my app. I have a branching system, which means I have a trunk were most of bugs are fixed, and a branch where patches are applied mostly using merges from the trunk (but there are also some fixes on the branch only that do not concern the trunk). The two versions of my application (v1 and v2) are versions from the branch.

我希望 TFS 2010 能够在这两个标签之间返回已修复的错误列表(即类型 = 已关闭和验证的错误的工作项列表).

I would like TFS 2010 to be able to return the list of bugs that were fixed (ie. the list of work items with type = Bug that are closed and verified) between these two labels.

我尝试使用 TFS 2010 的 Web UI 或使用 Visual Studio 来实现这一点,但我没有找到任何方法.

I tried to achieve this using the web UI of TFS 2010, or using Visual Studio, but I didn't find any way.

然后我尝试使用以下命令行向 tf.exe 询问历史记录:

Then I tried to ask tf.exe for a history using the following command line:

tf history /server:http://server_url/collection_name "$/project_path" /version:LLABEL1~LLABEL2 /recursive /noprompt /format:brief

其中 LABEL1 是已经与应用程序 v1 的源代码相关联的标签,而 LABEL2 是已经与应用程序 v2 的源代码相关联的标签.它实际上以两种方式失败:- 命令行仅返回变更集列表,而不返回关联的已关闭工作项列表- 变更集列表仅包含我在分支本身上应用的变更集,而不包含我也应用的变更集以及主干然后合并到分支.设置与否/slotmode"参数不会改变任何东西.

where LABEL1 is the label that has been associated with the source code of the v1 of the application, and LABEL2 the label that has been associated with the source code of the v2 of the application. It actually fails in two ways: - the command line only returns a list of changesets, not a list of associated closed work items - the list of changesets only contains the changesets that I applied on the branch itself, not the changesets that I also applied and the trunk and then merged to the branch. Setting or not the "/slotmode" parameter doesn't change anything.

在那里,我尝试编写一段 C# 代码来检索工作项列表(而不是变更集列表):

There I tried to write a piece of C# code to retrieve the list of workitems (not the list of changesets):

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://server_url/collection_name"));

VersionControlServer controlServer = tfs.GetService<VersionControlServer>();
VersionControlServer vcs = tfs.GetService<VersionControlServer>();

VersionSpec sFrom = VersionSpec.ParseSingleSpec("LLABEL1", null);
VersionSpec sTo = VersionSpec.ParseSingleSpec("LLABEL2", null);

var changesets = vcs.QueryHistory(
    "$/project_path",
    sTo,
    0,
    RecursionType.Full,
    null,
    sFrom,
    sTo,
    int.MaxValue,
    true,
    false); // Slotmode to false

Dictionary<int, WorkItem> dico = new Dictionary<int, WorkItem>();
foreach (Changeset set in changesets)
{
    foreach (WorkItem zz in set.WorkItems)
    {
        if (!dico.ContainsKey(zz.Id))
        {
            dico.Add(zz.Id, zz);
        }
    }
}

foreach (KeyValuePair<int, WorkItem> pair in dico.OrderBy(z => z.Key))
{
    Console.WriteLine(string.Format("ID: {0}, Title: {1}", pair.Key, pair.Value.Title));
}

这确实有效,我得到了两个标签之间的工作项列表,这正是我想要的.但是只考虑与在分支本身上提交的变更集相关联的工作项:在主干上解决然后合并到分支的Bug"类型的工作项不会出现.Slotmode 不会改变任何东西.

This actually works, I get the list of workitems between my two labels which is actually what I wanted. But only workitems associated to changesets that were committed on the branch itself are taken into account: the workitems of type "Bug" that were solved on the trunk then merged to the branch don't appear. Slotmode doesn't change anything.

然后我终于尝试用由变更集定义的VersionSpecs替换由标签定义的VersionSpecs:

Then I finally tried to replace VersionSpecs that were defined by a label with VersionSpecs that are defined by changesets:

VersionSpec sFrom = VersionSpec.ParseSingleSpec("C5083", null);
VersionSpec sTo = VersionSpec.ParseSingleSpec("C5276", null);

我的代码终于可以工作了.

And my code finally works.

所以我的问题是:我如何使用标签获得相同的结果,哪些是我用来标识版本的 TFS 对象?如果不可能,我应该如何识别 TFS 2010 中的版本?谢谢.

So my question is: how could I get the same result with labels, which are the TFS objects I use to identify a version? If it's not possible, how should I identify a version in TFS 2010? Thx.

顺便说一句,我在 stackoverflow 上发现了一些问题,但没有一个给我带标签的答案.例如:问题示例

Btw I found some questions on stackoverflow, but none of them gave me answers with labels. For instance: Question example

推荐答案

我认为 http://tfschangelog.codeplex.com/ 可能会在这里帮助你.

I think http://tfschangelog.codeplex.com/ can possibly help you here.

TFS ChangeLog 应用程序允许用户从 TFS 自动生成发行说明.用户将必须提供有关他们的项目、分支和变更集范围的信息,然后 TFS ChangeLog 应用程序将从给定范围内的每个变更集中提取信息以及与这些变更集相关的所有工作项.即它将从开始变更集到结束变更集,并将提取有关每个变更集的数据以及 XML 文件中的相关工作项.

TFS ChangeLog applicatoin allows users to automatically generate release notes from TFS. Users will have to provide information on thier project, branch and changeset range and then TFS ChangeLog application will extract information from each changeset in a given range and all the associated workitems to such changesets. i.e. it will travel from starting changeset upto ending changeset and will extract data about each changeset along with associated workitems in an XML file.

然后用户可以使用他们自己的转换逻辑,包括过滤器、排序、样式、输出格式等来生成发行说明报告.

Users can then use their own transformation logic including filter, sorting, styling, output formatting, etc. to generate Release Notes Report.

我想在这里添加的另一件事与 TFS 中的标签有关.标签基本上与变更集分配/关联.目前,TFS ChangeLog 应用程序不支持标签来定义起点和终点,但它支持可以用作变通解决方案的变更集.

Another thing I would like to add here will be related to Labels in TFS. Labels are basically assigned / associated with changesets. Currently, TFS ChangeLog application does not support Labels to define starting and ending point but it does support changeset which can be used as a workaround solution.

希望这有用.

这篇关于TFS 2010:如何使用标签在应用程序的两个版本之间生成变更日志(即工作项列表)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆