Azure DevOps API 代码搜索返回旧文件(已重命名)

AzureDevOps API CodeSearch is returning old file (that has been renamed)

我有一个请求我们所有存储库的服务,然后对于每个存储库,我在存储库中获取所有 csproj 和 vbproj。

我的问题是它 return 同一个文件的两个版本!

例如: 以这种方式创建了一个项目 => MYPROJECT.csproj 并提交, 然后重命名为 MyProject.csproj 并提交。

但是 CodeSearch Api 正在 return 这两个文件! 我怎么知道哪一个是正确的?

文档似乎没有提到它,或者我不明白我需要发送哪些属性,或者哪些属性告诉我这是一个旧文件。

文档

https://docs.microsoft.com/en-us/rest/api/azure/devops/search/code%20search%20results/fetch%20code%20search%20results?view=azure-devops-rest-5.1

URL

https://almsearch.dev.azure.com/MyOrganisation/MyProject/_apis/search/codesearchresults?api-version=5.1-preview.1

BODY

{
    'searchText': 'ext:csproj',
    'includeFacets': false,
    '$skip': 0,
    '$top': 1000,
    'filters': {
        'Project': ['MyProject']
    },
    '$orderBy': [{
        'field': 'filename',
        'sortOrder': 'ASC'
    }]
}

当我直接在 DevOps 上进行相同的研究时,我在旧文件上看到了这个标志

所以必须有一种方法来判断它是否是旧文件!

我怎样才能得到它?

我收到了相同的消息(我使用 git mv 命令重命名了文件):

我在提交重命名的文件后单击搜索按钮时收到此消息。但是,当我刷新页面时,警告消失了:

对我来说,它看起来像是基于某种本地缓存索引的网络搜索,但它知道某些文件已更改。因此,您将无法通过 REST API 调用实现此目的。

我可以在我这边重现这个问题。在 Tfvc Repo 中,代码搜索结果将 return 文件的所有版本。

根据我的测试,它们之间的区别是versions -> changeid

一般changeid是增量的,可以根据changeid的值来判断新旧版本。这是一个解决方法。

另一方面,我会帮助您在我们的Developer Community论坛上报告这个问题,在我们的工程师确认后,这个问题会报告给产品团队。如果他们查看更新,产品团队将提供更新。