【发布时间】:2012-03-05 18:06:24
【问题描述】:
这是 my previous question 关于 TFS 2010 和创建变更日志的可能性。
我之前使用标签来识别程序的版本,但由于标签不是固定时间点,现在我使用分支。
分支层次结构如下所示:
如您所见,有两个不同的应用程序是主干的分支:APP_A(应用程序 A)和APP_B(应用程序 B)。两者几乎相同,但存在一些功能差异。
以下是创建应用程序新版本(比如 1.3 版)的过程:
- 修改了
Main trunk(添加了新功能,修复了错误...) - 从修改后的
Main trunk创建一个新分支:Main trunk 1.3 -
APP_A分支可能会被修改,因此APP_A的独特功能将适用于 v1.3 的修改 -
APP_B分支可能会被修改,因此APP_B的独特功能将适用于 v1.3 的修改 -
Main trunk 1.3合并到APP_A和APP_B,因此APP_A和APP_B应用程序都会收到Main trunk的修改 - 从修改后的
APP_A分支创建一个新分支:APP_A_1.3 - 从修改后的
APP_B分支创建一个新分支:APP_B_1.3
我的目标是能够在APP_A_1.3 和APP_A_1.2 之间生成更新日志。
变更日志是指工作项列表。每个签入的变更集都与一个或多个工作项相关联(例如,一个错误项)。 我希望能够获取链接到已影响 APP_A_1.3 的变更集的所有工作项的列表:这些变更集可能来自 Main trunk(上面的第 1 步)、@ 987654347@(上面的第 3 步)甚至是 APP_A_1.3 分支本身(如果在创建分支后签入了修补程序)。
为了获取此工作项列表,我尝试获取“链接”到APP_A_1.2 的所有变更集列表(“链接”= 签入的代码变更集中现在位于分支 APP_A_1.2) 以及“链接”到 APP_A_1.3 的所有变更集的列表。
然后,我将能够知道哪些变更集“链接”到APP_A_1.3,而不是“链接”到APP_A_1.2。从这个变更集子集中,我将获得所有相关的 WorkItems 以及我的变更日志。
这是我的问题:如何获得与指定分支“链接”的 ALL 变更集列表?我将 TFS 2010 API 用于 C# 代码。
我的程序的输入(将检索指定分支的所有变更集)将是分支的名称(例如 APP_A_1.2),输出将是以下变更集的列表:
- 应用于
APP_A_1.2分支本身的变更集 - 在创建
APP_A_1.2之前应用于APP_A分支的变更集 - 在
Main trunk 1.2分支合并到APP_A之前应用的变更集 - 在创建
Main trunk 1.2之前应用于Main trunk分支的变更集
我编写了以下代码来获取所有这些变更集:
// Gets the list of all changesets ID from APP_A_1.2 branch
var branch1ChangeSets = myVersionControlServer.QueryHistory(
"$/PATH/APP_A_1.2/",
VersionSpec.Latest,
0,
RecursionType.Full,
null,
null,
null,
int.MaxValue,
false,
false).OfType<Changeset>().Select(z => z.ChangesetId).ToList();
即使指定了RecursionType.Full,上面的代码只返回在APP_A_1.2分支本身签入的变更集。这与 Visual Studio 中源代码资源管理器视图中的“历史记录”命令相同。
然后我尝试了以下代码:
// Gets the list of all changesets ID from APP_A_1.2 branch
var branch1MergedChangeSets = myVersionControlServer.QueryMerges(
null,
null,
"$/PATH/APP_A_1.2/",
VersionSpec.Latest,
null,
null,
RecursionType.Full).Select(z => z.SourceVersion).ToList();
这将返回在 APP_A_1.2 分支上签入的变更集 + 在创建 APP_A_1.2 之前在 APP_A 分支上签入的变更集。好多了,但还不够。我找不到使递归与“高于”APP_A(在我的情况下为Main trunk)的分支一起工作的方法......
有人有想法吗?
此外,欢迎任何更好的想法来获取两个分支之间的变更日志...... 谢谢。
【问题讨论】:
-
好问题! ATM,您不知道如何准确地检索变更集。获得它们后,请考虑 B.Hodges 的这篇精彩文章,它将帮助您将变更集列表与工作项列表相关联:blogs.msdn.com/b/buckh/archive/2012/02/01/…
标签: c# branch tfs-workitem changelog