zoukankan      html  css  js  c++  java
  • Azure DevOps Server: 使用Rest Api获取拉取请求Pull Request中的变更文件清单

    需求:

    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页面中拉取请求的文件清单完全一样。
    image
    图一:拉取请求

    注意:

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

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

    --End--

  • 相关阅读:
    ORA00845 MEMORY_TARGET not supported on this system (oracle11g for asianux3 )
    文件处理命令
    网络通信
    Chapter05Usage and Configuration of the Oracle Shared Server
    压缩解压缩命令
    PAT 1088 Rational Arithmetic[模拟分数的加减乘除][难]
    知识点最小二乘学习与正规表达式
    Missing Number[回溯][难]
    PAT 1065 A+B and C[大数运算][溢出]
    PAT 1055 The World's Richest[排序][如何不超时]
  • 原文地址:https://www.cnblogs.com/danzhang/p/10493182.html
Copyright © 2011-2022 走看看