リポジトリAPI
リポジトリツリーの一覧
プロジェクト内のリポジトリのファイルやディレクトリの一覧を取得します。 このエンドポイントは、リポジトリが公開されている場合は認証なしでアクセスできます。
このコマンドは、git ls-tree
コマンドと基本的に同じ機能を提供します。詳しくは、Git内部ドキュメントの_ツリーオブジェクトの_セクションをご覧ください。
GET /projects/:id/repository/tree
パラメーター
-
id
(必須) - 認証されたユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 -
path
(オプション) - リポジトリ内のパス。 サブディレクトリの内容を取得するために使用します。 -
ref
(オプション) - リポジトリのブランチまたはタグの名前。 -
recursive
(オプ シ ョ ナル) - 再帰ツ リ ーを取得す る ために用い ら れ る 論理値 (デフ ォル ト では false)。 -
per_page
(オプション) - ページごとに表示する結果の数。 指定しない場合、デフォルトは20
[
{
"id": "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba",
"name": "html",
"type": "tree",
"path": "files/html",
"mode": "040000"
},
{
"id": "4535904260b1082e14f867f7a24fd8c21495bde3",
"name": "images",
"type": "tree",
"path": "files/images",
"mode": "040000"
},
{
"id": "31405c5ddef582c5a9b7a85230413ff90e2fe720",
"name": "js",
"type": "tree",
"path": "files/js",
"mode": "040000"
},
{
"id": "cc71111cfad871212dc99572599a568bfe1e7e00",
"name": "lfs",
"type": "tree",
"path": "files/lfs",
"mode": "040000"
},
{
"id": "fd581c619bf59cfdfa9c8282377bb09c2f897520",
"name": "markdown",
"type": "tree",
"path": "files/markdown",
"mode": "040000"
},
{
"id": "23ea4d11a4bdd960ee5320c5cb65b5b3fdbc60db",
"name": "ruby",
"type": "tree",
"path": "files/ruby",
"mode": "040000"
},
{
"id": "7d70e02340bac451f281cecf0a980907974bd8be",
"name": "whitespace",
"type": "blob",
"path": "files/whitespace",
"mode": "100644"
}
]
リポジトリからブロブを取得
リポジトリ内の blob のサイズや内容などの情報を受け取ることができます。 blob の内容は Base64 エンコードされていることに注意してください。 リポジトリが公開されている場合、このエンドポイントは認証なしでアクセスできます。
GET /projects/:id/repository/blobs/:sha
パラメーター
-
id
(必須) - 認証されたユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 -
sha
(必須) - blob SHA
生のブロブコンテンツ
このエンドポイントは、リポジトリが公開されていれば認証なしでアクセスできます。
GET /projects/:id/repository/blobs/:sha/raw
パラメーター
-
id
(必須) - 認証されたユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 -
sha
(必須) - blob SHA
ファイルアーカイブの取得
リポジトリのアーカイブを取得します。 リポジトリが公開されている場合、このエンドポイントは認証なしでアクセスできます。
このエンドポイントには、1分あたり5リクエストのレート制限しきい値があります。
GET /projects/:id/repository/archive[.format]
format
は、アーカイブ形式を表すオプションのサフィックスです。 デフォルトはtar.gz
. tar.gz
です。tar.gz
オプションは tar.gz
、 ,tar.bz2
,tbz
,tbz2
,tb2
,bz2
,tar
, およびzip
です。 たとえば、archive.zip
を指定すると、ZIP 形式のアーカイブが送信されます。
パラメーター
-
id
(必須) - 認証されたユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 -
sha
(オプション) - ダウンロードするコミット SHA。 タグ、ブランチリファレンス、または SHA を使用できます。 指定がない場合のデフォルトはデフォルトブランチの先端です。 たとえば、以下のようになります:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.com/api/v4/projects/<project_id>/repository/archive?sha=<commit_sha>"
ブランチ、タグ、コミットの比較
リポジトリが公開されている場合、このエンドポイントは認証なしでアクセスできます。 diff の制限に達した場合、diff の文字列が空になる可能性があることに注意してください。
GET /projects/:id/repository/compare
パラメーター
-
id
(必須) - 認証されたユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 -
from
(必須) - コミット SHA あるいはブランチ名。 -
to
(必須) - コミット SHA あるいはブランチ名。 -
straight
(オプション) - 比較方法。from
とto
(from
…to
) を直接比較する場合はtrue
、マージベース (from
…to
) を使用して比較する場合はfalse
となります。 デフォルトはfalse
です。
GET /projects/:id/repository/compare?from=master&to=feature
応答してください:
{
"commit": {
"id": "12d65c8dd2b2676fa3ac47d955accc085a37a9c1",
"short_id": "12d65c8dd2b",
"title": "JS fix",
"author_name": "Example User",
"author_email": "user@example.com",
"created_at": "2014-02-27T10:27:00+02:00"
},
"commits": [{
"id": "12d65c8dd2b2676fa3ac47d955accc085a37a9c1",
"short_id": "12d65c8dd2b",
"title": "JS fix",
"author_name": "Example User",
"author_email": "user@example.com",
"created_at": "2014-02-27T10:27:00+02:00"
}],
"diffs": [{
"old_path": "files/js/application.js",
"new_path": "files/js/application.js",
"a_mode": null,
"b_mode": "100644",
"diff": "--- a/files/js/application.js\n+++ b/files/js/application.js\n@@ -24,8 +24,10 @@\n //= require g.raphael-min\n //= require g.bar-min\n //= require branch-graph\n-//= require highlightjs.min\n-//= require ace/ace\n //= require_tree .\n //= require d3\n //= require underscore\n+\n+function fix() { \n+ alert(\"Fixed\")\n+}",
"new_file": false,
"renamed_file": false,
"deleted_file": false
}],
"compare_timeout": false,
"compare_same_ref": false
}
投稿者
リポジトリの投稿者リストを取得します。 リポジトリが公開されている場合、このエンドポイントは認証なしでアクセスできます。
GET /projects/:id/repository/contributors
パラメーター
-
id
(必須) - 認証されたユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス。 -
order_by
(オプション) -name
、email
、またはcommits
(コミット日順) フィールドでcommits
並べ替えられた投稿者を返しますcommits
。 デフォルトはcommits
-
sort
(オプション) - 投稿者をasc
あるいはdesc
順にソートして返します。 デフォルトはasc
応答してください:
[{
"name": "Example User",
"email": "example@example.com",
"commits": 117,
"additions": 2097,
"deletions": 517
}, {
"name": "Sample User",
"email": "sample@example.com",
"commits": 33,
"additions": 338,
"deletions": 244
}]
マージベース
2つ以上の参照(コミットSHA、ブランチ名、タグ)の共通の先祖を取得します。
GET /projects/:id/repository/merge_base
属性 | タイプ | 必須 | 説明 |
---|---|---|---|
id
| 整数/文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス |
refs
| アレイ | はい | 共通の祖先を見つけるための参照。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/merge_base?refs[]=304d257dcb821665ab5110318fc58a007bd104ed&refs[]=0031876facac3f2b2702a0e53a26e89939a42209"
回答例
{
"id": "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863",
"short_id": "1a0b36b3",
"title": "Initial commit",
"created_at": "2014-02-27T08:03:18.000Z",
"parent_ids": [],
"message": "Initial commit\n",
"author_name": "Example User",
"author_email": "user@example.com",
"authored_date": "2014-02-27T08:03:18.000Z",
"committer_name": "Example User",
"committer_email": "user@example.com",
"committed_date": "2014-02-27T08:03:18.000Z"
}