You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure DevOps Services .NET SDK和TfvcHttpClient合并变更集

使用Azure DevOps .NET SDK实现TFVC变更集合并

需求背景

需要用Azure DevOps Services .NET SDK的TfvcHttpClient替代tf.exe的以下合并命令功能:

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

已完成前置步骤:

  • 成功加载分支:
TfvcBranch branch1 = tfvcHttpClient.GetBranchAsync(project: "A Project", path: "$/branch1").Result;
TfvcBranch branch2 = tfvcHttpClient.GetBranchAsync(project: "A Project", path: "$/branch2").Result;
  • 成功加载目标变更集:
TfvcChangeset changeset = tfvcHttpClient.GetChangesetAsync(137).Result;

当前缺失关键步骤:将变更集137从branch1合并到branch2(注:源代码托管在TFS服务器,非Git,无法使用GitHttpClient或拉取请求)


解决方案

使用TfvcHttpClient.CreateMergeAsync方法即可实现对应tf merge的合并逻辑,以下是完整实现代码:

// 构建合并请求参数
var mergeRequest = new TfvcMergeRequestData
{
    // 源分支路径
    SourcePath = branch1.Path,
    // 目标分支路径
    TargetPath = branch2.Path,
    // 指定合并的单个变更集C137
    SourceVersion = new TfvcVersionDescriptor
    {
        Version = "137",
        VersionType = TfvcVersionType.Changeset,
        VersionOption = TfvcVersionOption.None
    },
    // 开启递归合并,对应/recursive参数
    Recursive = true,
    // 可选:自动解决无冲突的合并项,默认false
    AutoResolve = false
};

// 执行合并操作
var mergeResult = tfvcHttpClient.CreateMergeAsync(
    mergeRequest,
    project: "A Project"
).Result;

参数说明

  • SourcePath/TargetPath:对应tf merge命令中的源、目标分支路径
  • SourceVersion:精准指定要合并的变更集,这里设置为单个变更集137,对应/version:C137~C137
  • Recursive:设为true对应/recursive参数,递归处理所有子目录和文件
  • AutoResolve:可选参数,开启后会自动处理无冲突的合并项

后续操作提示

  1. 若合并出现冲突,mergeResult会包含冲突详情,需手动处理冲突后再提交
  2. 合并完成后,需调用TfvcHttpClient.CreateChangesetAsync提交变更,才能将合并结果正式应用到目标分支
  3. 确保当前Azure DevOps账号拥有分支合并权限

内容的提问来源于stack exchange,提问作者rayzinnz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:30:52