VSTS GIT REST API игнорирует "ExcludeDeletes"; есть ли обходной путь?

Я столкнулся с проблемой, которая, похоже, указывает на то, что VSTS REST API для Git не работает должным образом в крайнем случае. Моя цель состоит в том, чтобы убедиться, что коммит был удален из VSTS посредством сквоша с ребазой; У меня есть ProjectId, repositoryId и коммит хеша, и API представляет тривиальный способ сделать это - или, я так думаю, - путем установки параметра "ExcludeDeletes" при получении коммита, но он не работает должным образом для меня: я все еще коммит из VSTS, как если бы он существовал.

Процедура:

  1. Создать репо.
  2. Создать 3 коммитов.
  3. Нажмите на пульт.
  4. Rebase-squash 2-й коммит, выполнив интерактивную rebase --onto
  5. Принудительное нажатие на пульт (может потребоваться сначала установить разрешение для этого)
  6. Наблюдайте, что коммит отсутствует локально через "git log | grep "
  7. Выполните запрос VSTS Api с помощью ProjectId, RepositoryId и CommitId, используя это для фильтра:
new GitQueryCommitsCriteria 
{ 
    FromCommitId = {localCommitHash.Hash},
    ToCommitId = {localCommitHash.Hash}, 
    ExcludeDeletes = true 
};
  1. Обратите внимание на наличие фиксации в ответе 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 ветка по умолчанию.

Другие вопросы по тегам