首页 文章

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

提问于
浏览
0

我遇到了一个问题,似乎指向GST的VSTS REST API在边缘情况下无法正常工作 . 我的目标是验证通过rebase squash从VSTS中删除了提交;我有projectId,repositoryId和commit hash可用,并且API提供了一个简单的方法来做到这一点 - 或者我认为 - 通过在检索提交时设置“ExcludeDeletes”参数,但它对我来说不正常:我仍然得到来自VSTS的提交,就像它存在一样 .

工作流程:

  • 创建一个回购 .

  • 创建3个提交 .

  • 推送到远程 .

  • Rebase-squash第二次提交通过交互式rebase --onto

  • 强制推送到远程(可能需要首先设置权限)

  • 通过"git log | grep "观察本地缺席提交

  • 通过ProjectId,RepositoryId和CommitId执行VSTS Api请求,使用此过滤器:

新的GitQueryCommitsCriteria
{
FromCommitId =

ToCommitId =

ExcludeDeletes = true
};

  • 尽管"ExcludeDeletes"字段设置为"true",但仍注意到VSTS响应中是否存在提交 .

我也尝试使用Postman发布使用4.1和5.0预览API的GET,但无济于事 .

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

1 回答

  • 0

    似乎仍然列出的已删除提交甚至在REST API Get Commits Batch中将 excludeDeletes 选项指定为 true .

    而且似乎你已经在developer community报告了它 . 因此,您可以跟进并等待功能团队的响应 .

    现在解决方法是从响应中排除已删除的提交是 specifying the branch you want to get the commits from .

    例如,如果您在 master 分支上压缩rebase提交,那么您可以通过请求正文从 master 分支进行提交:

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

    然后响应默认情况下在 master 分支上排除已删除的提交(提交已被压缩的rebase) .

相关问题