Сравнить две ветки/тега/коммита

GET /repos/{username}/{reponame}/compare/{basehead}

Описание

Сравнивает два тега, коммита или ветки и возвращает разницу между ними (аналог git diff). Полезно для анализа изменений перед созданием запроса на слияние.

Заголовки

ПараметрОбязательныйОписание
acceptНетТип содержимого ответа. Рекомендуется установить значение application/vnd.gitverse.object+json;version=latest

Тело запроса

Для этого метода нет тела запроса. Все параметры передаются через URL.

Параметры запроса

ПолеТипОписание
usernamePathИмя владельца репозитория (обязательный)
reponamePathНазвание репозитория (обязательный)
baseheadPathСравниваемые ссылки в формате base...head (обязательный)
pageQueryНомер страницы (по умолчанию: 1) (необязательный)
per_pageQueryКоличество результатов на странице (максимум 50) (необязательный)

Формат basehead: base...head — например: main...feature/new-ui, v1.0.0...v1.1.0, abc123...def456.

Пример запроса

curl -X GET "https://api.gitverse.ru/repos/user/APInewTestRepo4.3/compare/main...feature/new-ui" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1"

Ответ (200 OK)

{
  "url": "https://api.gitverse.ru/repos/user/APInewTestRepo4.3/compare/main...feature/new-ui",
  "html_url": "https://gitverse.ru/user/APInewTestRepo4.3/compare/main...feature/new-ui",
  "status": "diverged",
  "ahead_by": 3,
  "behind_by": 2,
  "total_commits": 5,
  "base_commit": {
    "sha": "main_sha...",
    "url": "https://api.gitverse.ru/repos/user/APInewTestRepo4.3/commits/main_sha...",
    "html_url": "https://gitverse.ru/user/APInewTestRepo4.3/commit/main_sha...",
    "verification": {
      "verified": false,
      "reason": "gpg.error.not_signed_commit",
      "signature": null,
      "payload": null,
      "verified_at": null
    }
  },
  "merge_base_commit": {
    "sha": "common_ancestor_sha...",
    "url": "https://api.gitverse.ru/repos/user/APInewTestRepo4.3/commits/common_ancestor_sha...",
    "html_url": "https://gitverse.ru/user/APInewTestRepo4.3/commit/common_ancestor_sha...",
    "verification": {
      "verified": false,
      "reason": "gpg.error.not_signed_commit",
      "signature": null,
      "payload": null,
      "verified_at": null
    }
  },
  "commits": [
    {
      "sha": "commit1...",
      "author": { "login": "user1" },
      "commit": { "message": "Add new UI component" },
      "verification": {
        "verified": false,
        "reason": "gpg.error.not_signed_commit",
        "signature": null,
        "payload": null,
        "verified_at": null
      },
      "stats": { "additions": 40, "deletions": 10 },
      "files": [
        { "filename": "ui/button.js", "status": "modified" }
      ]
    }
  ],
  "files": [
    {
      "filename": "ui/button.js",
      "status": "modified",
      "additions": 15,
      "deletions": 5,
      "changes": 20,
      "sha": "file_sha...",
      "patch": "..."
    }
  ]
}

Проверка подписи коммита

Объект verification содержит результат проверки криптографической подписи коммита.

ПолеТипОписание
verifiedbooleanПризнак успешной проверки подписи. Возвращает true, если подпись подтверждена, иначе — false.
reasonstringТехническая причина результата проверки. Например, gpg.error.not_signed_commit означает, что коммит не содержит подписи.
signaturestring или nullПодпись, извлеченная из коммита. Возвращает null, если подпись отсутствует.
payloadstring или nullДанные, для которых была создана подпись. Возвращает null, если подписанные данные отсутствуют.
verified_atstring или nullДата и время проверки подписи в формате ISO 8601. Возвращает null, если время проверки отсутствует.

Коды ответов

КодСтатусОписание
200OKСравнение успешно выполнено
404Not FoundОдин или оба объекта (ветка, тег, коммит) не найдены
429Too Many RequestsПревышен лимит запросов
500Internal Server ErrorВнутренняя ошибка сервера