在TFS的每个Commit中修改的代码行休息api。如何得到?

时间:2017-01-18 07:29:47

标签: azure-devops

在TFS api中,只允许获取修改后的文件计数。但是需要在休息调用中为每个提交获取每个文件的修改行数(添加/删除)。

1 个答案:

答案 0 :(得分:4)

没有官方发布的REST API可以做到这一点。但您可以参考这些步骤来实现您的要求

  1. Get a list of commits获取提交的提交ID。
  2. Get a commit by commit id(步骤1)获取父母的值和存储库ID(_links>存储库> href结尾处的值)(使用_links的URL>如果你不知道,那么更改> href可以获取文件路径知道)
  3. 通过此 POST 请求https://[account].visualstudio.com/[team项目名称] / _api / _versioncontrol / fileDiff?__ v = 5& diffParameters = [data 1]& repositoryId = [repository id]获取文件差异
  4. [data 1]值是JSON数据(删除空格)。

    JSON喜欢:

    {
    "originalPath":"/index.html",
    "originalVersion":"GC[a parent value, step 2]",
    "modifiedPath":"/index.html(path: step 2)",
    "modifiedVersion":"GC[commit id]",
    "partialDiff":true,
    "includeCharDiffs":true
    }
    

    结果包含这个(你需要计算changeType不等于0的项目,2表示删除,1表示添加):

     {
          "changeType": 2,
          "mLine": 9,
          "mLines": [],
          "mLinesCount": 0,
          "oLine": 9,
          "oLines": [
            "    <!-- Polyfill(s) for older browsers -->"
          ],
          "oLinesCount": 1
        },
     {
          "changeType": 1,
          "mLine": 22,
          "mLines": [
            "      <div>2</div>"
          ],
          "mLinesCount": 1,
          "oLine": 23,
          "oLines": [],
          "oLinesCount": 0
        }
    

    您可以使用Developer Tools Network capture捕获提交的请求网址(历史记录&gt;提交&gt;选择提交)。