我遇到了一个问题,该问题似乎指向针对Git的VSTS REST API在极端情况下无法正常工作。我的目标是验证是否已通过rebase壁球从VSTS中删除了提交;我有可用的projectId,repositoryId和commit哈希值,并且API提出了一种简单的方法-或者我认为-通过在获取提交时设置“ ExcludeDeletes”参数,但它对我来说仍然无法正常工作:我仍然可以来自VSTS的提交,就好像它已经存在一样。
工作流程:
new GitQueryCommitsCriteria { FromCommitId = {localCommitHash.Hash}, ToCommitId = {localCommitHash.Hash}, ExcludeDeletes = true };
我还尝试过使用Postman发行GET,用于4.1和5.0预览版API,都无济于事。
我在这里从VSTS期望的行为与该项目的业务逻辑的关键部分联系在一起,在此问题上的任何帮助,我将不胜感激;也许我误会了该领域的意图,在这种情况下,我确实可以使用一些指导来实现目标。
答案 0 :(得分:0)
即使在REST API Get Commits Batch中将excludeDeletes
选项指定为true
,似乎仍列出了已删除的提交。
看来您已经在developer community中进行了举报。这样您就可以在那里进行后续工作,并等待功能团队的回应。
现在从响应中排除已删除的提交的解决方法是指定要从中获取提交的分支。
就像您在master
分支上压榨基础提交一样,则可以通过请求正文从master
分支获取提交:
{
"itemVersion": {
"versionType": "branch",
"version": "master"
},
"fromCommitId": "string",
"toCommitId": "string",
}
然后默认情况下,响应会在master
分支上排除已删除的提交(这些提交已被压缩为基准)。