为了账号安全,请及时绑定邮箱和手机立即绑定

签入变更集以编程方式合并

签入变更集以编程方式合并

C#
catspeake 2021-06-29 09:59:35
我正在检索与 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 中的“跟踪变更集”功能。
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

根据你的描述,VersionControlServer.TrackMerges()就是你要使用的API。

TrackMerges(array<Int32[], ItemIdentifier, array<ItemIdentifier[], ItemSpec)

获取从源项到一组目标项的合并,以获取源变更集 ID 列表。

在 sourceItem 参数中,传递要跟踪更改的分支的根。在 targetItems 参数中,传递要将变更集跟踪到的分支的根。请注意,这仅适用于具有合并关系的分支根。确保这一点的最佳方法是查看分支层次结构并使分支直接相关或通过某些路由相关。

假设您想在这样的分支层次结构中跟踪从 $/Proj/Main 到 $/Proj/Feature2 的变更集:

$/Proj/Main
    $/Proj/Dev
       $/Proj/Feature2

然后,您希望将 $/Proj/Main 作为您的 sourceItem 和 $/Proj/Dev 和 $/Proj/Feature2 作为 targetItems 传递。

更多详细代码和示例请参考此博客:TFS API - TRACK CHANGESET MERGE IN BRANCHES


查看完整回答
反对 回复 2021-07-10
?
RISEBY

TA贡献1856条经验 获得超5个赞

可能有更有效的方法来做到这一点,但您可以使用以下内容查询相应分支的历史记录:


// 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 接口的引用。上面我假设您已经有了工作区参考。


查看完整回答
反对 回复 2021-07-10
  • 2 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信