Skip to main content
ドキュメントには� �繁に更新が� えられ、その都度公開されています。本ページの翻訳はま� 未完成な部分があることをご了承く� さい。最新の情� �については、英語のドキュメンテーションをご参照く� さい。本ページの翻訳に問題がある� �合はこちらまでご連絡く� さい。

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-06-03. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてく� さい。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してく� さい。

Git Database APIを使ってみる

Git Database APIでは、GitHub Enterprise Server上のGitデータベースに対してRaw形式のGitオブジェクトを読み書きしたり、リファレンス (ブランチheadやタグ) をリストおよび更新したりすることができます。

概要

これにより、さまざまなGitの機能を、APIを介して再実装することができます。Raw形式オブジェクトのオブジェクトをデータベースに直接作成し、ブランチリファレンスを更新することにより、Gitをインストールしなくても、Gitができることのほとんどを行えるのです。

Git Database API関数は、Gitリポジトリが空または利用できない� �合、409 Conflictを返します。 リポジトリが利用できないということは、通常、GitHub Enterprise Serverがリポジトリを作成処理中であるということです。 空のリポジトリの� �合は、「ファイルコンテンツの作成または更新」エンドポイントを使用してコンテンツを作成し、リポジトリを初期化してGit Database APIを使用できるようにすることができます。 このレスポンスステータスが継続している� �合は、your site administratorまでご連絡く� さい。

Gitデータベースの概要

Gitオブジェクトデータベースについての詳細は、Pro GitブックのGitの内側の� を参照してく� さい。

例として、リポジトリのファイルに変更をコミットしたい� �合は、次のようにします。

  • 現在のコミットオブジェクトを取得する
  • ポイントするツリーを取得する
  • 特定のファイルパスに対してツリーが持つblobオブジェクトのコンテンツを取得する
  • 何らかの方法でコンテンツを変更し、新しいコンテンツで新しいblobオブジェクトをPOSTし、blob SHAを再取得する
  • ファイルパスポインタが新しいblob SHAに置き換えられたツリーオブジェクトをPOSTし、ツリーSHAを再取得する
  • 現在のコミットSHAを親とする新しいコミットオブジェクトと、新しいツリーSHAを作成し、コミットSHAを再取得する
  • ブランチのリファレンスを、新しいコミットSHAを指すように更新する

複雑に見えるかもしれませんが、実際にはモデルを理解していれば非常に単純で、理解することによりAPIでできることが広がるでしょう。

プルリクエストのマージ可能性を確認

警告: 更新でGit refをmergeするために直接Gitを使用したり、GET /repos/{owner}/{repo}/git/refs/{ref}を使用したりしないでく� さい。こうしたコンテンツが古くて使えなくなっても警告されません。

testマージコミットを作成するには、使用するAPIは、明示的にプルリクエストを要求する必要があります。 testマージコミットは、UIでプルリクエストを表示して [Merge] ボタンが表示されるか、REST APIを使ってプルリクエストを取得作成、または編集した際に作成されます。 このリクエストがなければ、merge Git refは次に誰かがプルリクエストを表示するまで期限切れになります。

期限切れのmerge Git refを生成するポーリングメソッドを現在使用している� �合、GitHubでは以下のステップに従い、デフォルトブランチ から最新の変更を取得することをお勧めします。

  1. プルリクエストwebhookを受け取ります。
  2. GET /repos/{owner}/{repo}/pulls/{pull_number}を呼び出し、マージコミット候補を作成するためのバックグラウンドジョブを開始します。
  3. mergeable属性がtruefalseかを判断するため、GET /repos/{owner}/{repo}/pulls/{pull_number}を使用してリポジトリをポーリングします。 更新でGit refをmergeするために直接Gitを、または GET /repos/{owner}/{repo}/git/refs/{ref}を使用できるのは、前の手� �を実行した� �合のみです。