VSTS GIT REST API игнорирует "ExcludeDeletes"; есть ли обходной путь?
Я столкнулся с проблемой, которая, похоже, указывает на то, что VSTS REST API для Git не работает должным образом в крайнем случае. Моя цель состоит в том, чтобы убедиться, что коммит был удален из VSTS посредством сквоша с ребазой; У меня есть ProjectId, repositoryId и коммит хеша, и API представляет тривиальный способ сделать это - или, я так думаю, - путем установки параметра "ExcludeDeletes" при получении коммита, но он не работает должным образом для меня: я все еще коммит из VSTS, как если бы он существовал.
Процедура:
- Создать репо.
- Создать 3 коммитов.
- Нажмите на пульт.
- Rebase-squash 2-й коммит, выполнив интерактивную rebase --onto
- Принудительное нажатие на пульт (может потребоваться сначала установить разрешение для этого)
- Наблюдайте, что коммит отсутствует локально через "git log | grep "
- Выполните запрос VSTS Api с помощью ProjectId, RepositoryId и CommitId, используя это для фильтра:
new GitQueryCommitsCriteria { FromCommitId = {localCommitHash.Hash}, ToCommitId = {localCommitHash.Hash}, ExcludeDeletes = true };
- Обратите внимание на наличие фиксации в ответе VSTS, несмотря на то, что для поля "ExcludeDeletes" установлено значение "true".
Я также попытался выдать GET, используя Postman, для API с предварительным просмотром 4.1 и 5.0, но безрезультатно.
Поведение, которое я ожидаю от VSTS, связано с важной частью бизнес-логики проекта, и я был бы признателен за любую помощь в этом вопросе; возможно, я неправильно понимаю намерения области, и в этом случае я действительно мог бы использовать некоторые указания относительно того, как достичь своей цели.
1 ответ
Кажется, что удаленные коммиты все еще перечислены даже указать excludeDeletes
вариант как true
в REST API Get Commits Batch.
И, кажется, вы уже сообщили об этом в сообществе разработчиков. Так что вы можете следить за ним и ждать ответа специальной группы.
Обходной путь для исключения удаленных коммитов из ответа - указать ветку, из которой вы хотите получить коммиты.
Например, если вы играете в сквош, master
филиал, то вы можете получить коммиты от master
ответвление по телу запроса:
{
"itemVersion": {
"versionType": "branch",
"version": "master"
},
"fromCommitId": "string",
"toCommitId": "string",
}
Тогда ответ исключает удаленные коммиты (коммиты были раздавлены, ребаз) на master
ветка по умолчанию.