我遇到了一个问题,似乎指向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 回答
似乎仍然列出的已删除提交甚至在REST API Get Commits Batch中将
excludeDeletes
选项指定为true
.而且似乎你已经在developer community报告了它 . 因此,您可以跟进并等待功能团队的响应 .
现在解决方法是从响应中排除已删除的提交是 specifying the branch you want to get the commits from .
例如,如果您在
master
分支上压缩rebase提交,那么您可以通过请求正文从master
分支进行提交:然后响应默认情况下在
master
分支上排除已删除的提交(提交已被压缩的rebase) .