需求:

Azure DevOps Server 的拉取请求模块,为开发团队提供了强大而且灵活的代码评审功能。拉取请求中变更文件清单,对质量管理人员,是一个宝贵的材料。质量保障人员可以从代码清单中分析不通文件的修改频率、不通文件对应需求类型的关联关系的功能。通过对这些数据的分析,可以深度挖掘开发过程中积累的数据的价值。下面介绍如何使用Azure DevOps Server 提供的Rest Api 轻易获取拉取请求的变革清单文件。

第一步:获取所有拉取请求

首先需要从拉取请求清单中获取你指定的拉取请求的API地址,例如下面的样例获取了ID为“”的一个拉取请求,属性url就是该拉取请求的详细信息接口。
Api样例:http://DevOpsServer:8080/tfs/defaultcollection/mydelegate/_apis/git/repositories/HelloWorld2/pullrequests
{
"value": [{
"repository": {
"id": "e7b2adbc-dab4-4432-a0df-072b9a8d48b9",
"name": "HelloWorld2",
"url": "http://DevOpsServer:8080/tfs/DefaultCollection/_apis/git/repositories/e7b2adbc-dab4-4432-a0df-072b9a8d48b9",
......
}],
"count": 1
}

第二步:获取指定拉取请求的最后一次推送Push(Iteration)

拉取请求中包含了开发人员多次推送的数据,在API中使用Iteration来记录,实际上就是Push信息。下面的Api获取拉取请求所有的推送信息
Api样例:http://DevOpsServer:8080/tfs/DefaultCollection/_apis/git/repositories/e7b2adbc-dab4-4432-a0df-072b9a8d48b9/pullRequests/3/iterations

{
"value": [{
"id": 1,
"description": "已删除 tfs移动办公.txt",
"author": {
"displayName": "tfsadmin",
"url": "http://DevOpsServer:8080/tfs/DefaultCollection/_apis/Identities/f2f9bb4a-b4e2-4af2-b7ba-5b0547fdb085",
......
}
}, {
"id": 8,
"description": "change file",
"author": {
"displayName": "tfsadmin",
"url": "http://tfsdb:8080/tfs/DefaultCollection/_apis/Identities/f2f9bb4a-b4e2-4af2-b7ba-5b0547fdb085",
"_links": {
"avatar": {
"href": "http://DevOpsServer:8080/tfs/DefaultCollection/_api/_common/identityImage?id=f2f9bb4a-b4e2-4af2-b7ba-5b0547fdb085"
}
},
"id": "f2f9bb4a-b4e2-4af2-b7ba-5b0547fdb085",
"uniqueName": "",
"imageUrl": "http://DevOpsServer:8080/tfs/DefaultCollection/_api/_common/identityImage?id=f2f9bb4a-b4e2-4af2-b7ba-5b0547fdb085"
},
"createdDate": "2019-03-07T02:07:30.419852Z",
"updatedDate": "2019-03-07T02:07:30.419852Z",
"sourceRefCommit": {
"commitId": "0c962a9213548ffbde87c9e0dfc7d6217e32e8cc"
},
"targetRefCommit": {
"commitId": "8120ded05da8e404f7e2818f71001b4d09ac4325"
},
"commonRefCommit": {
"commitId": "8120ded05da8e404f7e2818f71001b4d09ac4325"
},
"hasMoreCommits": false,
"reason": "push",
"push": {
"pushId": 43
}
}],
"count": 8
}

上面结果中最大的结果为推送编号为8

第三步:获取最后一次推送的变更

在Azure DevOps的涉及中,系统返回最后一次iteration中的结果,就是拉取请求中的所有变更文件,与git diff的结果一致。

http://DevOpsServer:8080/tfs/DefaultCollection/_apis/git/repositories/e7b2adbc-dab4-4432-a0df-072b9a8d48b9/pullRequests/3/iterations/4/changes?$top=99999

{
"changeEntries": [{
"changeTrackingId": 2,
"changeId": 1,
"item": {
"objectId": "457947435875FCD4A54E734E77F4D418B609079F",
"path": "/incrementalprogram.sln"
},
"changeType": "add"
}, {
"changeTrackingId": 3,
"changeId": 2,
"item": {
"objectId": "FA2758F61086EF18731420FA00AE37050C4BF436",
"path": "/本周工作.txt"
},
"changeType": "add"
}, {
"changeTrackingId": 4,
"changeId": 3,
"item": {
"objectId": "F8B4888565CAADC7510BE75682268D6C18EDD6DE",
"path": "/.vs/ProjectSettings.json"
},
"changeType": "add"
}, {
"changeTrackingId": 5,
"changeId": 4,
"item": {
"objectId": "66EE8634380AE95E26C9EEAD773917D077C62F50",
"path": "/.vs/slnx.sqlite"
},
"changeType": "add"
}]
}
通过统计分析最后一次推送包含的全部变更文件,我们就可以获取到这个拉取请求中包含的全部文件,效果和Web页面中拉取请求的文件清单完全一样。
图一:拉取请求

注意:

  1. 如果文件量太大,超出了默认返回100条的数量,需要在URL的参数中指定top=9999,表明每次调用API需要返回的数量。配置skip参数,还可以实现分页功能。

微软DevOps MVP 张洪君 http://www.cnblogs.com/danzhang

--End--

Azure DevOps Server: 使用Rest Api获取拉取请求Pull Request中的变更文件清单的更多相关文章

  1. 还原Azure DevOps Server (TFS)中误删除的生成流水线

    流水线历史记录 DevOps Server流水线的历史记录有完善的版本日志,用户可以随时回退到修改过程中的任何一个版本,还能比较差异.这个历史记录功能可以和代码库中的版本控制媲美. 图一:生成历史记录 ...

  2. 在Azure DevOps Server (TFS) 中修改团队项目名称

    概述 [团队项目]: 在Azure DevOps Server (原名TFS)中,团队项目(Team Project)是一个最基本的数据组织容器,包含了一个团队或者信息系统中的所有信息,包括源代码.文 ...

  3. 你好,Azure DevOps Server 2019;再见,Team Foundation Server

    微软正式发布Azure DevOps Server 2019的第一个版本,作为Team Foundation Server (TFS)2018的升级版本和替代产品. 这是目前市面上唯一一款将产品名称冠 ...

  4. Azure DevOps Server(TFS) 客户端分析

    Azure DevOps Server(TFS) 是微软公司的软件协作开发管理平台产品,为软件研发.测试.实施提供全流程的服务.作为一款应用服务器产品,他的客户端是什么,在哪里下载客户端?我们在项目实 ...

  5. 在Azure DevOps Server(TFS系统)中部署回退/回滚方案(Rollback)

    概述 Azure DevOps Server(之前名TFS)是微软公司实现软件研发.测试和部署一体化的全流程解决方案.在近几年的研发过程中,Azure DevOps Server 大幅增强了软件部署过 ...

  6. 在Azure DevOps Server的代理服务器安装Python环境

    Python和Azure DevOps Server Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初主要为系统运维人员编写自动化脚本,在实际应用中,Python已经在前端 ...

  7. 在Azure DevOps Server (TFS 2019) 流水线传递参数

    变量概述 在Azure DevOps Server的流水线中,变量是衔接不同任务和不通代理之间的桥梁,它可以使相对松散.各自独立的任务之间相关影响并共享数据.在流水线中使用变量,可以在各任务之间相互调 ...

  8. Azure DevOps Server:Git权限设置

    Azure DevOps Server 权限概述 在Azure DevOps Server (之前名称为TFS)中,权限是一个比较复杂的概念.从权限层级上来说,包括服务器级别.团队项目集合级别.团队项 ...

  9. 在Azure DevOps Server 中提交Maven 依赖包(mvn deploy-file)

    Contents 1. 概述 2. 必要准备 安装Java 下载安装Maven 3. 服务器配置 新建连接源 4. 客户端配置 5. 上传maven包文件 6. 常见问题 Maven最新版本3.6.2 ...

随机推荐

  1. shell脚本返回字符串

    shell脚本的return只能返回数值类型,可是我们很多时候想返回字符串 #!/bin/sh function getStr () { String="very good" ec ...

  2. 论坛:排序 >>case..when..then ..end的妙用

    a.主题列表按 最后更新时间 进行排序 数据库SQL语句中没有if..else的判断语句,但是oracle中有decode()函数可以实现这种判断语句,但是还可以用case..when..then . ...

  3. 数据库MySQL 之 索引原理与慢查询优化

    数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...

  4. springboot server.address 配置问题

    1. server.address 为对应机器ip地址时 ,如 18.10.x.x 此时访问该服务只能使用 ip 访问 . 2. 配置为 127.0.0.1 时  可以使用 localhost  和  ...

  5. 【转】你知道C#中的Lambda表达式的演化过程吗?

    [转]你知道C#中的Lambda表达式的演化过程吗? 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传 ...

  6. mysql安装后初始密码

    在安装过程中没有任何提示,安装完之后无法登陆 后经查询发现,可以暂时以 mysql -u root -p登陆 此账户没有密码直接enter即可. update user set Password=PA ...

  7. 2018.11.04 NOIP训练 小水塘(并查集)

    传送门 这是复习普及组的时候做过的题了. 之前一直觉得很难码没有去做. 现在发现可以用并查集直接水过去. 其实就是把题目中说的连通的部分的面积用带权并查集维护一下就行了. 代码: #include&l ...

  8. java sigar.jar

    http://blog.csdn.net/yin_jw/article/details/40151547 DEBUG Sigar - no libsigar-x86-linux.so in java. ...

  9. tomcat7 安装 windows 服务

    tomcat 可以安装成windows 服务,这样 每次启动就不需要启动tomcat了. 具体配置: 1.修改 service.bat 在行首添加 set "JAVA_HOME=E:\jdk ...

  10. java常用设计模式总览

    一.java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...