リポジトリ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

パラメーター

生のブロブコンテンツ

このエンドポイントは、リポジトリが公開されていれば認証なしでアクセスできます。

GET /projects/:id/repository/blobs/:sha/raw

パラメーター

ファイルアーカイブの取得

リポジトリのアーカイブを取得します。 リポジトリが公開されている場合、このエンドポイントは認証なしでアクセスできます。

このエンドポイントには、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 (オプション) - 比較方法。fromto (fromto) を直接比較する場合はtrue 、マージベース (fromto) を使用して比較する場合は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 (オプション) -nameemail、または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"
}