如何使用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~C137Recursive:设为true对应/recursive参数,递归处理所有子目录和文件AutoResolve:可选参数,开启后会自动处理无冲突的合并项
后续操作提示
- 若合并出现冲突,
mergeResult会包含冲突详情,需手动处理冲突后再提交 - 合并完成后,需调用
TfvcHttpClient.CreateChangesetAsync提交变更,才能将合并结果正式应用到目标分支 - 确保当前Azure DevOps账号拥有分支合并权限
内容的提问来源于stack exchange,提问作者rayzinnz
相关产品推荐
相关产品推荐

