- 回答例
- リポジトリのコミット一覧
- 複数のファイルとアクションを含むコミットの作成
- 単一のコミットを取得
- コミットがプッシュされたリファレンスの取得
- コミットのチェリーピック
- コミットの取り消し
- コミットの diff の取得
- コミットのコメントを取得
- コミットへのコメントの投稿
- コミットのディスカッションを取得
- コミットステータス
- コミットに関連するマージリクエストの一覧
- コミットの GPG 署名を取得
コミットAPI
この API はリポジトリのコミットをオペレーションします。コミットに関するGitLab 固有の情報についてはこちらをご覧ください。
回答例
この API からの応答の日付フィールドには、情報が重複している、または重複しているように見えるものがあります:
-
created_at
フィールドは他の GitLab API との整合性のためだけに存在します。これは常にcommitted_date
フィールドと同一です。 -
committed_date
とauthored_date
フィールドは異なるソースから生成されたもので、同一ではない可能性があります。
リポジトリのコミット一覧
GitLab 15.10 で導入された作成者別のコミット。
プロジェクト内のリポジトリコミットの一覧を取得します。
GET /projects/:id/repository/commits
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
ref_name | 文字列です。 | いいえ | リポジトリのブランチ、タグ、リビジョン範囲の名前。 |
since | 文字列です。 | いいえ | この日付以降のコミットのみが ISO 8601 形式で返されます。YYYY-MM-DDTHH:MM:SSZ
|
until | 文字列です。 | いいえ | この日付以前または日付のコミットのみが ISO 8601 形式で返されます。YYYY-MM-DDTHH:MM:SSZ
|
path | 文字列です。 | いいえ | ファイルパス |
author | 文字列です。 | いいえ | コミット作成者からコミットを検索します。 |
all | boolean | いいえ | リポジトリからすべてのコミットを取得します。 |
with_stats | boolean | いいえ | 各コミットに関する統計がレスポンスに追加されます。 |
first_parent | boolean | いいえ | マージコミットを見たときに最初の親コミットのみに従うようにします。 |
order | 文字列です。 | いいえ | コミットを順番に並べます。可能な値:default topo .デフォルトはdefault 、コミットは時系列順に表示されます。 |
trailers | boolean | いいえ | コミットごとにGit Trailerを解析して含めます。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits"
応答例
[
{
"id": "ed899a2f4b50b4370feeea94676502b42383c746",
"short_id": "ed899a2f4b5",
"title": "Replace sanitize with escape once",
"author_name": "Example User",
"author_email": "user@example.com",
"authored_date": "2021-09-20T11:50:22.001+00:00",
"committer_name": "Administrator",
"committer_email": "admin@example.com",
"committed_date": "2021-09-20T11:50:22.001+00:00",
"created_at": "2021-09-20T11:50:22.001+00:00",
"message": "Replace sanitize with escape once",
"parent_ids": [
"6104942438c14ec7bd21c6cd5bd995272b3faff6"
],
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
},
{
"id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
"short_id": "6104942438c",
"title": "Sanitize for network graph",
"author_name": "randx",
"author_email": "user@example.com",
"committer_name": "ExampleName",
"committer_email": "user@example.com",
"created_at": "2021-09-20T09:06:12.201+00:00",
"message": "Sanitize for network graph",
"parent_ids": [
"ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
],
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
}
]
複数のファイルとアクションを含むコミットの作成
JSON ペイロードを投稿してコミットを作成します。
POST /projects/:id/repository/commits
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス |
branch | 文字列です。 | yes | コミットするブランチの名前。新しいブランチを作成するには、start_branch あるいはstart_sha のどちらか、そしてオプションでstart_project も指定します。 |
commit_message | 文字列です。 | yes | コミットメッセージ |
start_branch | 文字列です。 | いいえ | 新しいブランチを開始するブランチ名 |
start_sha | 文字列です。 | いいえ | から新しいブランチを開始するコミットの SHA。 |
start_project | 整数/文字列 | いいえ | 新しいブランチを開始するプロジェクトのプロジェクト ID あるいはURL エンコードされたパス。デフォルトはid です。 |
actions[] | アレイ | yes | バッチとしてコミットするアクションハッシュの配列。どのような属性を指定するかは次の表を参照ください。 |
author_email | 文字列です。 | いいえ | コミット作成者のメールアドレスを指定します。 |
author_name | 文字列です。 | いいえ | コミット作成者の名前を指定します。 |
stats | boolean | いいえ | コミットの統計情報を含みます。デフォルトはtrueです。 |
force | boolean | いいえ |
true がstart_branch あるいはstart_sha
|
actions[] 属性 | 種類 | 必須 | 説明 |
---|---|---|---|
action | 文字列です。 | yes | 実行するアクション:create delete ,move ,update , またはchmod 。 |
file_path | 文字列です。 | yes | ファイルへのフルパス。例:lib/class.rb . |
previous_path | 文字列です。 | いいえ | 移動するファイルのオリジナルフルパス。例えば、lib/class1.rb 。move アクションでのみ考慮されます。 |
content | 文字列です。 | いいえ | ファイルの内容。delete 、chmod 、move 以外は必須。指定しない移動アクションはcontent 既存のファイルコンテンツを保持し、それ以外の値は content ファイルコンテンツを上書きします。 |
encoding | 文字列です。 | いいえ |
text またはbase64 。text がデフォルト。 |
last_commit_id | 文字列です。 | いいえ | 最後に確認されたファイルのコミットID。更新、移動、および削除アクションでのみ考慮されます。 |
execute_filemode | boolean | いいえ |
true/false がファイルの実行フラグを有効/無効にするとき。chmod アクションでのみ考慮されます。 |
PAYLOAD=$(cat << 'JSON'
{
"branch": "master",
"commit_message": "some commit message",
"actions": [
{
"action": "create",
"file_path": "foo/bar",
"content": "some content"
},
{
"action": "delete",
"file_path": "foo/bar2"
},
{
"action": "move",
"file_path": "foo/bar3",
"previous_path": "foo/bar4",
"content": "some content"
},
{
"action": "update",
"file_path": "foo/bar5",
"content": "new content"
},
{
"action": "chmod",
"file_path": "foo/bar5",
"execute_filemode": true
}
]
}
JSON
)
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \
--data "$PAYLOAD" "https://gitlab.example.com/api/v4/projects/1/repository/commits"
応答例
{
"id": "ed899a2f4b50b4370feeea94676502b42383c746",
"short_id": "ed899a2f4b5",
"title": "some commit message",
"author_name": "Example User",
"author_email": "user@example.com",
"committer_name": "Example User",
"committer_email": "user@example.com",
"created_at": "2016-09-20T09:26:24.000-07:00",
"message": "some commit message",
"parent_ids": [
"ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
],
"committed_date": "2016-09-20T09:26:24.000-07:00",
"authored_date": "2016-09-20T09:26:24.000-07:00",
"stats": {
"additions": 2,
"deletions": 2,
"total": 4
},
"status": null,
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
}
GitLab はフォームエンコーディングに対応しています。以下はCommit APIをフォームエンコーディングで使用した例です:
curl --request POST \
--form "branch=master" \
--form "commit_message=some commit message" \
--form "start_branch=master" \
--form "actions[][action]=create" \
--form "actions[][file_path]=foo/bar" \
--form "actions[][content]=</path/to/local.file" \
--form "actions[][action]=delete" \
--form "actions[][file_path]=foo/bar2" \
--form "actions[][action]=move" \
--form "actions[][file_path]=foo/bar3" \
--form "actions[][previous_path]=foo/bar4" \
--form "actions[][content]=</path/to/local1.file" \
--form "actions[][action]=update" \
--form "actions[][file_path]=foo/bar5" \
--form "actions[][content]=</path/to/local2.file" \
--form "actions[][action]=chmod" \
--form "actions[][file_path]=foo/bar5" \
--form "actions[][execute_filemode]=true" \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/repository/commits"
単一のコミットを取得
コミットハッシュやブランチ名、タグ名で指定したコミットを取得します。
GET /projects/:id/repository/commits/:sha
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | リポジトリのブランチやタグのコミットハッシュや名前 |
stats | boolean | いいえ | コミットの統計情報を含みます。デフォルトはtrueです。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master"
応答例
{
"id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
"short_id": "6104942438c",
"title": "Sanitize for network graph",
"author_name": "randx",
"author_email": "user@example.com",
"committer_name": "Dmitriy",
"committer_email": "user@example.com",
"created_at": "2021-09-20T09:06:12.300+03:00",
"message": "Sanitize for network graph",
"committed_date": "2021-09-20T09:06:12.300+03:00",
"authored_date": "2021-09-20T09:06:12.420+03:00",
"parent_ids": [
"ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
],
"last_pipeline" : {
"id": 8,
"ref": "master",
"sha": "2dc6aa325a317eda67812f05600bdf0fcdc70ab0",
"status": "created"
},
"stats": {
"additions": 15,
"deletions": 10,
"total": 25
},
"status": "running",
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/6104942438c14ec7bd21c6cd5bd995272b3faff6"
}
コミットがプッシュされたリファレンスの取得
コミットがプッシュされたすべての参照 (ブランチやタグから) を取得します。ページ分割パラメータpage
およびper_page
を使用すると、参照一覧を制限することができます。
GET /projects/:id/repository/commits/:sha/refs
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | コミットハッシュ |
type | 文字列です。 | いいえ | コミットのスコープ。指定可能な値branch ,tag ,all .デフォルトは . all
|
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/5937ac0a7beb003549fc5fd26fc247adbce4a52e/refs?type=all"
応答例
[
{"type": "branch", "name": "'test'"},
{"type": "branch", "name": "add-balsamiq-file"},
{"type": "branch", "name": "wip"},
{"type": "tag", "name": "v1.1.0"}
]
コミットのチェリーピック
指定したブランチへのコミットを cherry-pick します。
POST /projects/:id/repository/commits/:sha/cherry_pick
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | コミットハッシュ |
branch | 文字列です。 | yes | ブランチの名前 |
dry_run | boolean | いいえ | 変更をコミットしません。デフォルトはfalseです。GitLab 13.3 で導入。 |
message | 文字列です。 | いいえ | 新しいコミットで使用するカスタムコミットメッセージ。GitLab 14.0 で導入されました。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--form "branch=master" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/cherry_pick"
応答例
{
"id": "8b090c1b79a14f2bd9e8a738f717824ff53aebad",
"short_id": "8b090c1b",
"author_name": "Example User",
"author_email": "user@example.com",
"authored_date": "2016-12-12T20:10:39.000+01:00",
"created_at": "2016-12-12T20:10:39.000+01:00",
"committer_name": "Administrator",
"committer_email": "admin@example.com",
"committed_date": "2016-12-12T20:10:39.000+01:00",
"title": "Feature added",
"message": "Feature added\n\nSigned-off-by: Example User <user@example.com>\n",
"parent_ids": [
"a738f717824ff53aebad8b090c1b79a14f2bd9e8"
],
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/8b090c1b79a14f2bd9e8a738f717824ff53aebad"
}
cherry-pickが失敗したイベントには、その理由を説明します:
{
"message": "Sorry, we cannot cherry-pick this commit automatically. This commit may already have been cherry-picked, or a more recent commit may have updated some of its content.",
"error_code": "empty"
}
この場合、チェンジセットが空であったためにチェリーピックが失敗し、そのコミットがすでにターゲットブランチに存在していることを示します。他に考えられるエラーコードはconflict
で、これはマージが衝突したことを示しています。
dry_run
が有効になっている場合、サーバーはチェリーピックを適用しようと_試みますが、結果の変更を実際にコミットする_ことはありません。cherry-pickがきれいに適用された場合、APIは200 OK
で応答します:
{
"dry_run": "success"
}
失敗した場合は、ドライランを実行しなかった場合と同じエラーが表示されます。
コミットの取り消し
指定したブランチのコミットを取り消します。
POST /projects/:id/repository/commits/:sha/revert
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | SHAをコミットして差し戻します。 |
branch | 文字列です。 | yes | 対象ブランチ名 |
dry_run | boolean | いいえ | 変更をコミットしません。デフォルトはfalseです。GitLab 13.3 で導入。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "branch=master" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/a738f717824ff53aebad8b090c1b79a14f2bd9e8/revert"
応答例
{
"id":"8b090c1b79a14f2bd9e8a738f717824ff53aebad",
"short_id": "8b090c1b",
"title":"Revert \"Feature added\"",
"created_at":"2018-11-08T15:55:26.000Z",
"parent_ids":["a738f717824ff53aebad8b090c1b79a14f2bd9e8"],
"message":"Revert \"Feature added\"\n\nThis reverts commit a738f717824ff53aebad8b090c1b79a14f2bd9e8",
"author_name":"Administrator",
"author_email":"admin@example.com",
"authored_date":"2018-11-08T15:55:26.000Z",
"committer_name":"Administrator",
"committer_email":"admin@example.com",
"committed_date":"2018-11-08T15:55:26.000Z",
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/8b090c1b79a14f2bd9e8a738f717824ff53aebad"
}
リバートに失敗したイベントの場合、レスポンスではその理由について説明します:
{
"message": "Sorry, we cannot revert this commit automatically. This commit may already have been reverted, or a more recent commit may have updated some of its content.",
"error_code": "conflict"
}
この場合、差し戻しに失敗したのは、差し戻しの際にマージ競合が発生したためです。他に考えられるエラーコードはempty
で、これはチェンジセットが空であったことを示します。
dry_run
が有効な場合、サーバーは差し戻しの適用を_試みますが、その結果生じた変更は実際にはコミットさ_れません。差し戻しがきれいに適用された場合、API は200 OK
で応答します:
{
"dry_run": "success"
}
失敗した場合は、ドライランを実行しなかった場合と同じエラーが表示されます。
コミットの diff の取得
プロジェクト内のコミットの diff を取得します。
GET /projects/:id/repository/commits/:sha/diff
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | リポジトリのブランチやタグのコミットハッシュや名前 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/diff"
応答例
[
{
"diff": "@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
"new_path": "doc/update/5.4-to-6.0.md",
"old_path": "doc/update/5.4-to-6.0.md",
"a_mode": null,
"b_mode": "100644",
"new_file": false,
"renamed_file": false,
"deleted_file": false
}
]
コミットのコメントを取得
プロジェクト内のコミットのコメントを取得します。
GET /projects/:id/repository/commits/:sha/comments
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | リポジトリのブランチやタグのコミットハッシュや名前 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/comments"
応答例
[
{
"note": "this code is really nice",
"author": {
"id": 11,
"username": "admin",
"email": "admin@local.host",
"name": "Administrator",
"state": "active",
"created_at": "2014-03-06T08:17:35.000Z"
}
}
]
コミットへのコメントの投稿
コミットにコメントを追加します。
特定のファイルの特定の行にコメントを投稿するには、完全なコミット SHA を指定する必要があります。path
、line
、line_type
はnew
とします。
コメントは、以下のケースの少なくとも1つが有効であれば、最後のコミットの最後に追加されます:
-
sha
がブランチまたはタグであり、line
またはpath
が無効である場合。 -
line
の番号が無効(存在しない)。 -
path
は無効です(存在しません)。
上記のいずれの場合も、line
、line_type
、path
のレスポンスは、null
に設定されます。
マージリクエストにコメントする他のアプローチについては、Notes API のCreate new merge request noteおよび Discussions API のCreate a new thread in the merge request diffを参照してください。
POST /projects/:id/repository/commits/:sha/comments
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | リポジトリのブランチやタグのコミット SHA や名前 |
note | 文字列です。 | yes | コメントのテキスト |
path | 文字列です。 | いいえ | リポジトリからの相対ファイルパス |
line | 整数。 | いいえ | コメントを配置する行番号 |
line_type | 文字列です。 | いいえ | 行のタイプ。new またはold を引数にとります。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--form "note=Nice picture\!" --form "path=README.md" --form "line=11" --form "line_type=new" \
"https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/comments"
応答例
{
"author" : {
"web_url" : "https://gitlab.example.com/janedoe",
"avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
"username" : "janedoe",
"state" : "active",
"name" : "Jane Doe",
"id" : 28
},
"created_at" : "2016-01-19T09:44:55.600Z",
"line_type" : "new",
"path" : "README.md",
"line" : 11,
"note" : "Nice picture!"
}
コミットのディスカッションを取得
プロジェクト内のコミットのディスカッションを取得します。
GET /projects/:id/repository/commits/:sha/discussions
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | リポジトリのブランチやタグのコミットハッシュや名前 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/4604744a1c64de00ff62e1e8a6766919923d2b41/discussions"
応答例
[
{
"id": "4604744a1c64de00ff62e1e8a6766919923d2b41",
"individual_note": true,
"notes": [
{
"id": 334686748,
"type": null,
"body": "Nice piece of code!",
"attachment": null,
"author" : {
"id" : 28,
"name" : "Jane Doe",
"username" : "janedoe",
"web_url" : "https://gitlab.example.com/janedoe",
"state" : "active",
"avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png"
},
"created_at": "2020-04-30T18:48:11.432Z",
"updated_at": "2020-04-30T18:48:11.432Z",
"system": false,
"noteable_id": null,
"noteable_type": "Commit",
"resolvable": false,
"confidential": null,
"noteable_iid": null,
"commands_changes": {}
}
]
}
]
コミットステータス
GitLab で使用するコミットステータス API です。
コミットのステータスを一覧表示します
プロジェクト内のコミットのステータスを一覧表示します。pagination パラメータpage
およびper_page
を使用して、参照一覧を制限することができます。
GET /projects/:id/repository/commits/:sha/statuses
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | コミットSHA |
ref | 文字列です。 | いいえ | リポジトリのブランチまたはタグの名前、または省略した場合はデフォルトのブランチ |
stage | 文字列です。 | いいえ | 例えば、ビルドステージでフィルタリングします、test
|
name | 文字列です。 | いいえ |
ジョブ名でフィルタします、bundler:audit
|
all | boolean | いいえ | 最新のステータスだけでなく、すべてのステータスを返します。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/statuses"
応答例
[
...
{
"status" : "pending",
"created_at" : "2016-01-19T08:40:25.934Z",
"started_at" : null,
"name" : "bundler:audit",
"allow_failure" : true,
"author" : {
"username" : "janedoe",
"state" : "active",
"web_url" : "https://gitlab.example.com/janedoe",
"avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
"id" : 28,
"name" : "Jane Doe"
},
"description" : null,
"sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
"target_url" : "https://gitlab.example.com/janedoe/gitlab-foss/builds/91",
"finished_at" : null,
"id" : 91,
"ref" : "master"
},
{
"started_at" : null,
"name" : "test",
"allow_failure" : false,
"status" : "pending",
"created_at" : "2016-01-19T08:40:25.832Z",
"target_url" : "https://gitlab.example.com/janedoe/gitlab-foss/builds/90",
"id" : 90,
"finished_at" : null,
"ref" : "master",
"sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
"author" : {
"id" : 28,
"name" : "Jane Doe",
"username" : "janedoe",
"web_url" : "https://gitlab.example.com/janedoe",
"state" : "active",
"avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png"
},
"description" : null
},
...
]
コミットのパイプラインステータスの設定
コミットのパイプラインステータスを追加または更新します。コミットがマージリクエストに関連付けられている場合、APIコールはマージリクエストのソースブランチにあるコミットを対象としなければなりません。
POST /projects/:id/statuses/:sha
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | コミットSHA |
state | 文字列です。 | yes | ステータスの状態。以下のいずれかを指定します:pending running ,success ,failed 、canceled
|
ref | 文字列です。 | いいえ | ステータスが参照するref (ブランチまたはタグ) |
name またはcontext
| 文字列です。 | いいえ | このステータスを他のシステムのステータスと区別するためのラベル。デフォルト値はdefault
|
target_url | 文字列です。 | いいえ | このステータスに関連付けるターゲットURL |
description | 文字列です。 | いいえ | ステータスの短い説明 |
coverage | フロート | いいえ | 総コードカバレッジ |
pipeline_id | 整数。 | いいえ | ステータスを設定するパイプラインのID。同じSHAに複数のパイプラインがある場合に使用します。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/statuses/18f3e63d05582537db6d183d9d557be09e1f90c8?state=success"
応答例
{
"author" : {
"web_url" : "https://gitlab.example.com/janedoe",
"name" : "Jane Doe",
"avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
"username" : "janedoe",
"state" : "active",
"id" : 28
},
"name" : "default",
"sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
"status" : "success",
"coverage": 100.0,
"description" : null,
"id" : 93,
"target_url" : null,
"ref" : null,
"started_at" : null,
"created_at" : "2016-01-19T09:05:50.355Z",
"allow_failure" : false,
"finished_at" : "2016-01-19T09:05:50.365Z"
}
コミットに関連するマージリクエストの一覧
特定のコミットを最初に導入したマージリクエストについての情報を返します。
GET /projects/:id/repository/commits/:sha/merge_requests
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | コミットSHA |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/af5b13261899fb2c0db30abdd0af8b07cb44fdc5/merge_requests"
応答例
[
{
"id":45,
"iid":1,
"project_id":35,
"title":"Add new file",
"description":"",
"state":"opened",
"created_at":"2018-03-26T17:26:30.916Z",
"updated_at":"2018-03-26T17:26:30.916Z",
"target_branch":"master",
"source_branch":"test-branch",
"upvotes":0,
"downvotes":0,
"author" : {
"web_url" : "https://gitlab.example.com/janedoe",
"name" : "Jane Doe",
"avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
"username" : "janedoe",
"state" : "active",
"id" : 28
},
"assignee":null,
"source_project_id":35,
"target_project_id":35,
"labels":[ ],
"draft":false,
"work_in_progress":false,
"milestone":null,
"merge_when_pipeline_succeeds":false,
"merge_status":"can_be_merged",
"sha":"af5b13261899fb2c0db30abdd0af8b07cb44fdc5",
"merge_commit_sha":null,
"squash_commit_sha":null,
"user_notes_count":0,
"discussion_locked":null,
"should_remove_source_branch":null,
"force_remove_source_branch":false,
"web_url":"https://gitlab.example.com/root/test-project/merge_requests/1",
"time_stats":{
"time_estimate":0,
"total_time_spent":0,
"human_time_estimate":null,
"human_total_time_spent":null
}
}
]
コミットの GPG 署名を取得
コミットのGPG 署名を取得します。署名されていないコミットの場合は 404 応答となります。
GET /projects/:id/repository/commits/:sha/signature
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | 認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス |
sha | 文字列です。 | yes | リポジトリのブランチやタグのコミットハッシュや名前 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository/commits/da738facbc19eb2fc2cef57c49be0e6038570352/signature"
コミットが GPG 署名されている場合の応答例
{
"signature_type": "PGP",
"verification_status": "verified",
"gpg_key_id": 1,
"gpg_key_primary_keyid": "8254AAB3FBD54AC9",
"gpg_key_user_name": "John Doe",
"gpg_key_user_email": "johndoe@example.com",
"gpg_key_subkey_id": null,
"commit_source": "gitaly"
}
コミットが X.509 署名の場合の応答例:
{
"signature_type": "X509",
"verification_status": "unverified",
"x509_certificate": {
"id": 1,
"subject": "CN=gitlab@example.org,OU=Example,O=World",
"subject_key_identifier": "BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC",
"email": "gitlab@example.org",
"serial_number": 278969561018901340486471282831158785578,
"certificate_status": "good",
"x509_issuer": {
"id": 1,
"subject": "CN=PKI,OU=Example,O=World",
"subject_key_identifier": "AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB",
"crl_url": "http://example.com/pki.crl"
}
},
"commit_source": "gitaly"
}
コミットが符号なしの場合の応答例
{
"message": "404 GPG Signature Not Found"
}