次の関数は @bazel_tools//tools/build_defs/repo:git.bzl
から読み込めます。
外部 Git リポジトリのクローンを作成するためのルール。
git_repository
git_repository(name, branch, build_file, build_file_content, commit, init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
外部 Git リポジトリのクローンを作成します。
Git リポジトリのクローンを作成し、指定されたタグ(commit)をチェックアウトして、そのターゲットをバインディングできるようにします。また、実際にチェックアウトされた commit の ID とその日付を特定し、このルールの再現可能なバージョンを提供するパラメータを含む辞書を返します(タグは必ずしもそうではありません)。
Bazel はまず、指定された commit のみのシャロー フェッチを試みます。 失敗した場合(通常はサーバー サポートがないため)、リポジトリの完全なフェッチにフォールバックします。
git_repository
よりも http_archive
を優先します。その理由は次のとおりです。
- Git リポジトリ ルールはシステムの
git(1)
に依存しますが、HTTP ダウンローダーは Bazel に組み込まれており、システムの依存関係はありません。 http_archive
はurls
のリストをミラーとしてサポートし、git_repository
は単一のremote
のみをサポートします。http_archive
はリポジトリ キャッシュでは動作しますが、git_repository
は動作しません。詳しくは、#5116 をご覧ください。
属性
name |
名前(必須) このリポジトリの一意の名前。 |
branch |
文字列。省略可
リモート リポジトリのブランチをチェックアウトします。ブランチ、タグ、commit のいずれか 1 つのみを指定する必要があります。 |
build_file |
ラベル(省略可)
このリポジトリの BUILD ファイルとして使用するファイル。この属性は絶対ラベルです(メイン リポジトリの場合は「@//」を使用します)。ファイル名を BUILD にする必要はありませんが、通常は BUILD.new-repo-name のような名前にして、リポジトリの実際の BUILD ファイルと区別できます。 |
build_file_content |
文字列。省略可
このリポジトリの BUILD ファイルの内容。 |
commit |
文字列。省略可
確認します。ブランチ、タグ、commit のいずれか 1 つのみを指定する必要があります。 |
init_submodules |
ブール値。省略可
リポジトリ内にサブモジュールのクローンを作成するかどうか。 |
patch_args |
文字列のリスト。省略可
パッチツールに渡される引数。デフォルトは -p0 ですが、通常、git で生成されるパッチには -p1 が必要になります。複数の -p 引数が指定されている場合、最後の引数が有効になります。-p 以外の引数が指定されている場合、Bazel はフォールバックして、Bazel ネイティブのパッチ実装ではなくパッチ コマンドライン ツールを使用します。パッチ コマンドライン ツールにフォールバックし、patch_tool 属性が指定されていない場合は、「patch」が使用されます。 |
patch_cmds |
文字列のリスト。省略可
パッチ適用後に Linux/Macos に適用される Bash コマンドのシーケンス。 |
patch_cmds_win |
文字列のリスト。省略可
パッチ適用後に Windows で適用される Powershell コマンドの順序。この属性を設定しなかった場合、patch_cmds は Windows で実行され、Bash バイナリが存在している必要があります。 |
patch_tool |
文字列。省略可
使用する patch(1) ユーティリティ。これを指定すると、Bazel は Bazel ネイティブのパッチ実装ではなく、指定されたパッチツールを使用します。 |
patches |
ラベルのリスト。省略可 アーカイブの展開後にパッチとして適用するファイルのリスト。デフォルトでは、ファズマッチとバイナリパッチをサポートしない Bazel ネイティブのパッチ実装を使用しますが、「patch_tool」属性が指定されているか、「patch_args」属性に「-p」以外の引数がある場合、Bazel はフォールバックしてパッチ コマンドライン ツールを使用します。 |
recursive_init_submodules |
ブール値。省略可
リポジトリ内でサブモジュールのクローンを作成するかどうか。 |
remote |
文字列。必須
リモート Git リポジトリの URI |
repo_mapping |
辞書: 文字列 -> 文字列(必須)
ローカル リポジトリ名からグローバル リポジトリ名への辞書。これにより、このリポジトリの依存関係に対するワークスペースの依存関係の解決を制御できます。 たとえば、エントリ"@foo": "@bar" は、このリポジトリが@foo に依存しているときは常に(「@foo//some:target」への依存関係がある場合など)、グローバルに宣言された「@bar」(「@bar//some:target」)内でその依存関係を実際に解決する必要があると宣言しています。 |
shallow_since |
文字列。省略可
指定された commit の後ではない、省略可能な日付。タグやブランチが指定されている場合、引数は使用できません(--depth=1 で常にクローンを作成できます)。指定した commit に近い日付を設定すると、サーバーが任意の commit の浅いフェッチをサポートしていない場合でも、リポジトリのシャロー クローンを作成できる場合があります。git の --shallow-since 実装にはバグがあるため、この属性を使用すると取得エラーが発生する可能性があります。使用することはおすすめしません。 |
strip_prefix |
文字列。省略可
抽出されたファイルから削除するディレクトリ接頭辞。 |
tag |
文字列。省略可
リモート リポジトリのタグがチェックされます。ブランチ、タグ、commit のいずれか 1 つのみを指定する必要があります。 |
verbose |
ブール値。省略可 |
workspace_file |
ラベル(省略可)
このリポジトリの「WORKSPACE」ファイルとして使用するファイル。「workspace_file」または「workspace_file_content」はいずれか 1 つでも指定できます。両方を指定することもできません。 |
workspace_file_content |
文字列。省略可
このリポジトリの WORKSPACE ファイルの内容。「workspace_file」または「workspace_file_content」はいずれか 1 つでも指定できます。両方を指定することもできません。 |
new_git_repository
new_git_repository(name, branch, build_file, build_file_content, commit, init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
外部 Git リポジトリのクローンを作成します。
Git リポジトリのクローンを作成し、指定されたタグ(commit)をチェックアウトして、そのターゲットをバインディングできるようにします。また、実際にチェックアウトされた commit の ID とその日付を特定し、このルールの再現可能なバージョンを提供するパラメータを含む辞書を返します(タグは必ずしもそうではありません)。
Bazel はまず、指定された commit のみのシャロー フェッチを試みます。 失敗した場合(通常はサーバー サポートがないため)、リポジトリの完全なフェッチにフォールバックします。
git_repository
よりも http_archive
を優先します。その理由は次のとおりです。
- Git リポジトリ ルールはシステムの
git(1)
に依存しますが、HTTP ダウンローダーは Bazel に組み込まれており、システムの依存関係はありません。 http_archive
はurls
のリストをミラーとしてサポートし、git_repository
は単一のremote
のみをサポートします。http_archive
はリポジトリ キャッシュでは動作しますが、git_repository
は動作しません。詳しくは、#5116 をご覧ください。
属性
name |
名前(必須) このリポジトリの一意の名前。 |
branch |
文字列。省略可
リモート リポジトリのブランチをチェックアウトします。ブランチ、タグ、commit のいずれか 1 つのみを指定する必要があります。 |
build_file |
ラベル(省略可)
このリポジトリの BUILD ファイルとして使用するファイル。この属性は絶対ラベルです(メイン リポジトリの場合は「@//」を使用します)。ファイル名を BUILD にする必要はありませんが、通常は BUILD.new-repo-name のような名前にして、リポジトリの実際の BUILD ファイルと区別できます。 |
build_file_content |
文字列。省略可
このリポジトリの BUILD ファイルの内容。 |
commit |
文字列。省略可
確認します。ブランチ、タグ、commit のいずれか 1 つのみを指定する必要があります。 |
init_submodules |
ブール値。省略可
リポジトリ内にサブモジュールのクローンを作成するかどうか。 |
patch_args |
文字列のリスト。省略可
パッチツールに渡される引数。デフォルトは -p0 ですが、通常、git で生成されるパッチには -p1 が必要になります。複数の -p 引数が指定されている場合、最後の引数が有効になります。-p 以外の引数が指定されている場合、Bazel はフォールバックして、Bazel ネイティブのパッチ実装ではなくパッチ コマンドライン ツールを使用します。パッチ コマンドライン ツールにフォールバックし、patch_tool 属性が指定されていない場合は、「patch」が使用されます。 |
patch_cmds |
文字列のリスト。省略可
パッチ適用後に Linux/Macos に適用される Bash コマンドのシーケンス。 |
patch_cmds_win |
文字列のリスト。省略可
パッチ適用後に Windows で適用される Powershell コマンドの順序。この属性を設定しなかった場合、patch_cmds は Windows で実行され、Bash バイナリが存在している必要があります。 |
patch_tool |
文字列。省略可
使用する patch(1) ユーティリティ。これを指定すると、Bazel は Bazel ネイティブのパッチ実装ではなく、指定されたパッチツールを使用します。 |
patches |
ラベルのリスト。省略可 アーカイブの展開後にパッチとして適用するファイルのリスト。デフォルトでは、ファズマッチとバイナリパッチをサポートしない Bazel ネイティブのパッチ実装を使用しますが、「patch_tool」属性が指定されているか、「patch_args」属性に「-p」以外の引数がある場合、Bazel はフォールバックしてパッチ コマンドライン ツールを使用します。 |
recursive_init_submodules |
ブール値。省略可
リポジトリ内でサブモジュールのクローンを作成するかどうか。 |
remote |
文字列。必須
リモート Git リポジトリの URI |
repo_mapping |
辞書: 文字列 -> 文字列(必須)
ローカル リポジトリ名からグローバル リポジトリ名への辞書。これにより、このリポジトリの依存関係に対するワークスペースの依存関係の解決を制御できます。 たとえば、エントリ"@foo": "@bar" は、このリポジトリが@foo に依存しているときは常に(「@foo//some:target」への依存関係がある場合など)、グローバルに宣言された「@bar」(「@bar//some:target」)内でその依存関係を実際に解決する必要があると宣言しています。 |
shallow_since |
文字列。省略可
指定された commit の後ではない、省略可能な日付。タグやブランチが指定されている場合、引数は使用できません(--depth=1 で常にクローンを作成できます)。指定した commit に近い日付を設定すると、サーバーが任意の commit の浅いフェッチをサポートしていない場合でも、リポジトリのシャロー クローンを作成できる場合があります。git の --shallow-since 実装にはバグがあるため、この属性を使用すると取得エラーが発生する可能性があります。使用することはおすすめしません。 |
strip_prefix |
文字列。省略可
抽出されたファイルから削除するディレクトリ接頭辞。 |
tag |
文字列。省略可
リモート リポジトリのタグがチェックされます。ブランチ、タグ、commit のいずれか 1 つのみを指定する必要があります。 |
verbose |
ブール値。省略可 |
workspace_file |
ラベル(省略可)
このリポジトリの「WORKSPACE」ファイルとして使用するファイル。「workspace_file」または「workspace_file_content」はいずれか 1 つでも指定できます。両方を指定することもできません。 |
workspace_file_content |
文字列。省略可
このリポジトリの WORKSPACE ファイルの内容。「workspace_file」または「workspace_file_content」はいずれか 1 つでも指定できます。両方を指定することもできません。 |