我正在检索与WorkItem相关的tfvc变更集。我的下一步是我想检查它们是否合并到特定分支。我没有找到任何关于如何在c#中执行此操作的内容。
今天我拥有的是:
using (var changeSetClient =
new TfvcHttpClient(_uri, _credentials))
{
foreach (var relation in wi.Relations.Where(r => r.Url.Contains("Changeset")))
{
var changeset = changeSetClient.GetChangesetAsync("Welfare_Research_2009", relation.Attributes["id"]).Result;
changeset.
}
}
return null;
}
我也可以得到合适的TfvcBranch,我想知道它是否合并。
但我如何检查它是否合并?与Visual Studio中的“Track Changesets”功能非常相似。
答案 0 :(得分:2)
根据您的说明,VersionControlServer.TrackMerges()是您要使用的API。
TrackMerges(array<Int32[], ItemIdentifier, array<ItemIdentifier[], ItemSpec)
获取从源项目到一组目标项目的合并,以获取源变更集ID的列表。
在sourceItem参数中,传递您想要的分支的根目录 跟踪变化。在targetItems参数中,传递根目录 要跟踪变更集的分支。注意,这会 仅适用于具有合并关系的分支根。最好的 确保这是真的方法是查看分支层次结构和make 分支机构通过某种途径直接相关或相关。
我们假设您要跟踪从$ / Proj / Main到的变更集 分支层次结构中的$ / Proj / Feature2如下:
$/Proj/Main $/Proj/Dev $/Proj/Feature2
然后你想要传递$ / Proj / Main作为你的sourceItem和 $ / Proj / Dev AND $ / Proj / Feature2 as targetItems。
更多细节代码和示例请参阅此博客:TFS API - TRACK CHANGESET MERGE IN BRANCHES
答案 1 :(得分:0)
可能有更有效的方法,但您可以使用以下内容查询相应分支的历史记录:
// pseudo code
var parameter = new QueryHistoryParameters();
parameter.RecursionType = RecursionType.Full;
parameter.IncludeChanges = true;
// set other members to potentially filter out unneeded stuff
// especially, say, "VersionStart" / "VersionEnd".
var result = workspace.VersionControlServer.QueryHistory(parameter);
foreach (var entry in result)
{
// Compare "entry.ChangesetId" with the ID of the changeset you're looking for.
}
请注意,可以通过不同方式收集对VersionControlServer接口的引用。上面我假设你已经有工作区参考。