次の関数は @bazel_tools//tools/build_defs/repo:git.bzl から読み込むことができます。
外部 Git リポジトリのクローン作成のルール。
git_repository
load("@bazel//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(name, branch, build_file, build_file_content, canonical_id, commit, init_submodules,
patch_args, patch_cmds, patch_cmds_win, patch_strip, patch_tool, patches,
recursive_init_submodules, remote, remote_module_file_integrity,
remote_module_file_urls, remote_patch_strip, remote_patches, shallow_since,
sparse_checkout_file, sparse_checkout_patterns, strip_prefix, tag, verbose,
workspace_file, workspace_file_content)
外部の git リポジトリのクローンを作成します。
Git リポジトリのクローンを作成し、指定されたブランチ、タグ、commit をチェックアウトして、そのターゲットをバインディングに使用できるようにします。ブランチ、タグ、コミットが指定されていない場合は、リポジトリのデフォルト ブランチをチェックアウトします。また、チェックアウトされた commit の ID と日付を特定し、このルールの再現可能なバージョンを提供するパラメータを含む辞書を返します(タグやブランチは必ずしもそうではありません)。
Bazel は、まず指定されたコミットのみの浅いフェッチを試みます。失敗した場合(通常はサーバーのサポートがないことが原因)、リポジトリの完全なフェッチにフォールバックします。
git_repository よりも http_archive を優先します。その理由は次のとおりです。
- Git リポジトリ ルールはシステム
git(1)に依存しますが、HTTP ダウンローダーは Bazel に組み込まれており、システム依存関係はありません。 http_archiveはミラーとしてurlsのリストをサポートし、git_repositoryは単一のremoteのみをサポートします。http_archiveはリポジトリ キャッシュで動作しますが、git_repositoryでは動作しません。詳しくは、#5116 をご覧ください。
属性
name |
名前。必須
このリポジトリの一意の名前。 |
branch |
文字列。省略可
リモート リポジトリのブランチをチェックアウトします。branch、tag、commit のいずれか 1 つを正確に指定する必要があります。 |
build_file |
ラベル(省略可) このリポジトリの BUILD ファイルとして使用するファイル。この属性は絶対ラベルです(メイン リポジトリには「@//」を使用します)。ファイル名は BUILD にする必要はありませんが、BUILD.new-repo-name のように、リポジトリの実際の BUILD ファイルと区別しやすい名前にするとよいでしょう。 |
build_file_content |
文字列。省略可
このリポジトリの BUILD ファイルの内容。 |
canonical_id |
文字列。省略可
ダウンロードされたファイルの正規 ID。指定されていて空でない場合、Bazel は、同じ正規 ID のリクエストによってキャッシュに追加された場合を除き、キャッシュからファイルを取得しません。指定されていない場合や空の場合、Bazel はデフォルトでファイルの URL を正規 ID として使用します。これにより、ハッシュを更新せずに URL を更新するというよくある間違いを検出できます。この間違いを犯すと、ローカルではビルドが成功しても、キャッシュにファイルがないマシンではビルドが失敗します。この動作は、--repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 で無効にできます。 |
commit |
文字列。省略可
チェックアウトする特定の commit。branch、tag、commit のいずれか 1 つを正確に指定する必要があります。 |
init_submodules |
ブール値。省略可
リポジトリ内のサブモジュールをクローンするかどうか。 |
patch_args |
文字列のリスト。省略可 パッチツールに指定された引数。デフォルトは -p0 です(`patch_strip` 属性を参照)。ただし、git で生成されたパッチには通常 -p1 が必要です。複数の -p 引数が指定されている場合は、最後の引数が有効になります。-p 以外の引数が指定されている場合、Bazel は Bazel ネイティブのパッチ実装ではなく、パッチ コマンドライン ツールを使用するようにフォールバックします。パッチ コマンドライン ツールにフォールバックし、patch_tool 属性が指定されていない場合、`patch` が使用されます。 |
patch_cmds |
文字列のリスト。省略可 パッチの適用後に Linux/macOS に適用される Bash コマンドのシーケンス。 |
patch_cmds_win |
文字列のリスト。省略可 パッチの適用後に Windows に適用される PowerShell コマンドのシーケンス。この属性が設定されていない場合、patch_cmds は Windows で実行されます。この場合、Bash バイナリが存在する必要があります。 |
patch_strip |
整数。省略可 `N` に設定すると、`patch_args` の先頭に `-pN` を挿入するのと同じになります。 |
patch_tool |
文字列。省略可
使用する patch(1) ユーティリティ。これを指定すると、Bazel は Bazel ネイティブのパッチ実装の代わりに、指定されたパッチツールを使用します。 |
patches |
ラベルのリスト。省略可 アーカイブの抽出後にパッチとして適用されるファイルのリスト。デフォルトでは、ファジー マッチとバイナリ パッチをサポートしていない Bazel ネイティブのパッチ実装を使用しますが、`patch_tool` 属性が指定されている場合や、`patch_args` 属性に `-p` 以外の引数がある場合は、Bazel はパッチ コマンドライン ツールを使用するようにフォールバックします。 |
recursive_init_submodules |
ブール値。省略可
リポジトリでサブモジュールを再帰的にクローンするかどうか。 |
remote |
文字列。必須
リモートの Git リポジトリの URI |
remote_module_file_integrity |
文字列。省略可
内部使用のみ。 |
remote_module_file_urls |
文字列のリスト。省略可 内部使用のみ。 |
remote_patch_strip |
整数。省略可 リモート パッチのファイル名から削除する先頭のスラッシュの数。 |
remote_patches |
ディクショナリ: String -> String。省略可
パッチ ファイルの URL とその完全性値のマップ。リポジトリのクローン作成後、`patches` 属性のパッチ ファイルを適用する前に適用されます。Bazel ネイティブのパッチ実装を使用します。`remote_patch_strip` でパッチ ストリップ番号を指定できます。 |
shallow_since |
文字列。省略可
指定されたコミットより後の日付(省略可)。タグまたはブランチが指定されている場合、この引数は使用できません(タグまたはブランチは常に --depth=1 でクローンできます)。このような日付を指定されたコミットの近くに設定すると、サーバーが任意のコミットの浅いフェッチをサポートしていない場合でも、リポジトリの浅いクローンを作成できる可能性があります。git の --shallow-since 実装のバグにより、この属性を使用するとフェッチが失敗する可能性があるため、使用はおすすめしません。 |
sparse_checkout_file |
ラベル(省略可) このリポジトリ内のファイルのスパース チェックアウト用の .gitignore スタイルのパターンを含むファイル。`sparse_checkout_patterns` または `sparse_checkout_file` のいずれか、または両方とも指定しないことはできますが、両方を指定することはできません。 |
sparse_checkout_patterns |
文字列のリスト。省略可 このリポジトリ内のファイルのスパース チェックアウトのパターン シーケンス。 |
strip_prefix |
文字列。省略可
抽出されたファイルから削除するディレクトリ接頭辞。 |
tag |
文字列。省略可
タグをチェックアウトします。branch、tag、commit のいずれか 1 つを正確に指定する必要があります。 |
verbose |
ブール値。省略可 |
workspace_file |
ラベル(省略可) No-op 属性。使用しないでください。 |
workspace_file_content |
文字列。省略可
No-op 属性。使用しないでください。 |
環境変数
このリポジトリ ルールは、次の環境変数に依存します。
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID
new_git_repository
load("@bazel//tools/build_defs/repo:git.bzl", "new_git_repository")
new_git_repository(name, branch, build_file, build_file_content, canonical_id, commit,
init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_strip, patch_tool,
patches, recursive_init_submodules, remote, remote_module_file_integrity,
remote_module_file_urls, remote_patch_strip, remote_patches, shallow_since,
sparse_checkout_file, sparse_checkout_patterns, strip_prefix, tag, verbose,
workspace_file, workspace_file_content)
外部の git リポジトリのクローンを作成します。
Git リポジトリのクローンを作成し、指定されたブランチ、タグ、commit をチェックアウトして、そのターゲットをバインディングに使用できるようにします。ブランチ、タグ、コミットが指定されていない場合は、リポジトリのデフォルト ブランチをチェックアウトします。また、チェックアウトされた commit の ID と日付を特定し、このルールの再現可能なバージョンを提供するパラメータを含む辞書を返します(タグやブランチは必ずしもそうではありません)。
Bazel は、まず指定されたコミットのみの浅いフェッチを試みます。失敗した場合(通常はサーバーのサポートがないことが原因)、リポジトリの完全なフェッチにフォールバックします。
git_repository よりも http_archive を優先します。その理由は次のとおりです。
- Git リポジトリ ルールはシステム
git(1)に依存しますが、HTTP ダウンローダーは Bazel に組み込まれており、システム依存関係はありません。 http_archiveはミラーとしてurlsのリストをサポートし、git_repositoryは単一のremoteのみをサポートします。http_archiveはリポジトリ キャッシュで動作しますが、git_repositoryでは動作しません。詳しくは、#5116 をご覧ください。
属性
name |
名前。必須
このリポジトリの一意の名前。 |
branch |
文字列。省略可
リモート リポジトリのブランチをチェックアウトします。branch、tag、commit のいずれか 1 つを正確に指定する必要があります。 |
build_file |
ラベル(省略可) このリポジトリの BUILD ファイルとして使用するファイル。この属性は絶対ラベルです(メイン リポジトリには「@//」を使用します)。ファイル名は BUILD にする必要はありませんが、BUILD.new-repo-name のように、リポジトリの実際の BUILD ファイルと区別しやすい名前にするとよいでしょう。 |
build_file_content |
文字列。省略可
このリポジトリの BUILD ファイルの内容。 |
canonical_id |
文字列。省略可
ダウンロードされたファイルの正規 ID。指定されていて空でない場合、Bazel は、同じ正規 ID のリクエストによってキャッシュに追加された場合を除き、キャッシュからファイルを取得しません。指定されていない場合や空の場合、Bazel はデフォルトでファイルの URL を正規 ID として使用します。これにより、ハッシュを更新せずに URL を更新するというよくある間違いを検出できます。この間違いを犯すと、ローカルではビルドが成功しても、キャッシュにファイルがないマシンではビルドが失敗します。この動作は、--repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 で無効にできます。 |
commit |
文字列。省略可
チェックアウトする特定の commit。branch、tag、commit のいずれか 1 つを正確に指定する必要があります。 |
init_submodules |
ブール値。省略可
リポジトリ内のサブモジュールをクローンするかどうか。 |
patch_args |
文字列のリスト。省略可 パッチツールに指定された引数。デフォルトは -p0 です(`patch_strip` 属性を参照)。ただし、git で生成されたパッチには通常 -p1 が必要です。複数の -p 引数が指定されている場合は、最後の引数が有効になります。-p 以外の引数が指定されている場合、Bazel は Bazel ネイティブのパッチ実装ではなく、パッチ コマンドライン ツールを使用するようにフォールバックします。パッチ コマンドライン ツールにフォールバックし、patch_tool 属性が指定されていない場合、`patch` が使用されます。 |
patch_cmds |
文字列のリスト。省略可 パッチの適用後に Linux/macOS に適用される Bash コマンドのシーケンス。 |
patch_cmds_win |
文字列のリスト。省略可 パッチの適用後に Windows に適用される PowerShell コマンドのシーケンス。この属性が設定されていない場合、patch_cmds は Windows で実行されます。この場合、Bash バイナリが存在する必要があります。 |
patch_strip |
整数。省略可 `N` に設定すると、`patch_args` の先頭に `-pN` を挿入するのと同じになります。 |
patch_tool |
文字列。省略可
使用する patch(1) ユーティリティ。これを指定すると、Bazel は Bazel ネイティブのパッチ実装の代わりに、指定されたパッチツールを使用します。 |
patches |
ラベルのリスト。省略可 アーカイブの抽出後にパッチとして適用されるファイルのリスト。デフォルトでは、ファジー マッチとバイナリ パッチをサポートしていない Bazel ネイティブのパッチ実装を使用しますが、`patch_tool` 属性が指定されている場合や、`patch_args` 属性に `-p` 以外の引数がある場合は、Bazel はパッチ コマンドライン ツールを使用するようにフォールバックします。 |
recursive_init_submodules |
ブール値。省略可
リポジトリでサブモジュールを再帰的にクローンするかどうか。 |
remote |
文字列。必須
リモートの Git リポジトリの URI |
remote_module_file_integrity |
文字列。省略可
内部使用のみ。 |
remote_module_file_urls |
文字列のリスト。省略可 内部使用のみ。 |
remote_patch_strip |
整数。省略可 リモート パッチのファイル名から削除する先頭のスラッシュの数。 |
remote_patches |
ディクショナリ: String -> String。省略可
パッチ ファイルの URL とその完全性値のマップ。リポジトリのクローン作成後、`patches` 属性のパッチ ファイルを適用する前に適用されます。Bazel ネイティブのパッチ実装を使用します。`remote_patch_strip` でパッチ ストリップ番号を指定できます。 |
shallow_since |
文字列。省略可
指定されたコミットより後の日付(省略可)。タグまたはブランチが指定されている場合、この引数は使用できません(タグまたはブランチは常に --depth=1 でクローンできます)。このような日付を指定されたコミットの近くに設定すると、サーバーが任意のコミットの浅いフェッチをサポートしていない場合でも、リポジトリの浅いクローンを作成できる可能性があります。git の --shallow-since 実装のバグにより、この属性を使用するとフェッチが失敗する可能性があるため、使用はおすすめしません。 |
sparse_checkout_file |
ラベル(省略可) このリポジトリ内のファイルのスパース チェックアウト用の .gitignore スタイルのパターンを含むファイル。`sparse_checkout_patterns` または `sparse_checkout_file` のいずれか、または両方とも指定しないことはできますが、両方を指定することはできません。 |
sparse_checkout_patterns |
文字列のリスト。省略可 このリポジトリ内のファイルのスパース チェックアウトのパターン シーケンス。 |
strip_prefix |
文字列。省略可
抽出されたファイルから削除するディレクトリ接頭辞。 |
tag |
文字列。省略可
タグをチェックアウトします。branch、tag、commit のいずれか 1 つを正確に指定する必要があります。 |
verbose |
ブール値。省略可 |
workspace_file |
ラベル(省略可) No-op 属性。使用しないでください。 |
workspace_file_content |
文字列。省略可
No-op 属性。使用しないでください。 |
環境変数
このリポジトリ ルールは、次の環境変数に依存します。
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID