首页 > 解决方案 > 获取为 Azure DevOps Rest API 中的提交编辑的代码行:已编辑的大文件 (changeType==3) 不返回完整更改

问题描述

尝试获取非常大文件(10K+ 行)的行更改时,并非所有更改都返回。有没有办法对返回结果进行分页?还是可以发送不同的查询参数以免截断响应?

网址 =https://{account}.visualstudio.com/{project}/_api/_versioncontrol/fileDiff?__v=5&diffParameters={params}&repositoryId={repositoryId}

参数(删除空格)=

{
     "originalPath": commit path,
     "originalVersion": parent commit_id,
     "modifiedPath": commit path,
     "modifiedVersion": commit_id,
     "partialDiff": True
}

(预期)示例响应(基于答案):

{
     "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
}

我能够得到回应。但是响应不包括在文件深处发现的行更改;这通常在通过 UI 查看提交时显示,并带有以下警告:“文件太大,无法包含在更改摘要视图中。导航到文件以查看完整差异。”

标签: azure-devops-rest-api

解决方案


恐怕无法在您的场景中获得所有线路。由于topandskip参数在此 api 中不起作用。你可以查看continuationTokenresponse中是否有监听器,如果有continuationToken,则尝试continuationToken={continuationToken}在api中添加,看看是否有效。如果没有continuationToken,则无法获取文件中的所有行,因为它太大了。


推荐阅读