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

bhu*_*thu 1 azure-devops

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

sta*_*SFT 5

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

  1. 获取提交列表以获取提交的提交 ID。
  2. Get a commit by commit id (steps 1) to get parents value and repository id (The value at the end of _links>Repository>href) )
  3. 通过此POST请求获取文件差异https://[account].visualstudio.com/[team project name] /_api/_versioncontrol/fileDiff?__v=5&diffParameters=[data 1]&repositoryId=[repository id]

[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
}
Run Code Online (Sandbox Code Playgroud)

结果包含以下内容(您需要计算 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
    }
Run Code Online (Sandbox Code Playgroud)

您可以使用Developer Tools Network capture 捕获提交的请求 URL(历史记录 > 提交 > 选择提交)。