VSTS GIT REST API 忽略 "ExcludeDeletes";有解决方法吗?

VSTS GIT REST API ignores the "ExcludeDeletes"; is there a workaround?

我遇到的问题似乎指向 VSTS REST API for Git 在极端情况下无法正常工作。我的目标是通过 rebase squash 验证提交是否已从 VSTS 中删除;我有可用的 projectId、repositoryId 和提交哈希,并且 API 提供了一种简单的方法 - 或者我认为 - 通过在检索提交时设置 "ExcludeDeletes" 参数,但它无法正常工作对我来说:我仍然从 VSTS 获得提交,就好像它存在一样。

工作流程:

  1. 创建一个代码库。
  2. 创建 3 个提交。
  3. 推送到远程。
  4. Rebase-squash 第二次提交通过交互式 rebase --onto
  5. 强制推送到远程(可能需要先设置权限)
  6. 通过 "git log | grep "
  7. 观察本地缺失的提交
  8. 通过 ProjectId、RepositoryId 和 CommitId 执行 VSTS Api 请求,将其用于过滤器:
new GitQueryCommitsCriteria 
{ 
    FromCommitId = {localCommitHash.Hash},
    ToCommitId = {localCommitHash.Hash}, 
    ExcludeDeletes = true 
};
  1. 观察 VSTS 响应中是否存在提交,尽管 "ExcludeDeletes" 字段设置为 "true"。

我还尝试使用 Postman 为 4.1 和 5.0-preview APIs 发出 GET,但无济于事。

我在这里期望 VSTS 的行为与项目业务逻辑的关键部分相关联,我将不胜感激对此事的任何帮助;也许我误解了该领域的意图,在这种情况下,我真的可以使用一些指导来实现我的目标。

似乎删除的提交仍然列出,甚至在 REST API Get Commits Batch.

中将 excludeDeletes 选项指定为 true

而且您似乎已经在 developer community 中报告过了。所以你可以在那里跟进并等待功能团队的回复。

目前从响应中排除已删除提交的解决方法是指定要从中获取提交的分支

例如,如果您压缩 master 分支上的 rebase 提交,那么您可以通过请求主体从 master 分支获取提交:

{
  "itemVersion": {
    "versionType": "branch",
    "version": "master"
  },
  "fromCommitId": "string",
  "toCommitId": "string",
}

然后响应默认排除 master 分支上已删除的提交(提交已被压缩 rebase)。