Git 저장소 규칙

다음 함수는 @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, 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 저장소를 클론하고 지정된 태그 또는 커밋을 확인한 후 바인딩할 수 있도록 타겟을 사용 설정합니다. 또한 실제로 체크아웃된 커밋의 ID와 날짜를 확인하고 이 규칙의 재현 가능한 버전 (태그일 필요는 없음)을 제공하는 매개변수가 포함된 dict를 반환합니다.

Bazel은 먼저 지정된 커밋의 얕은 가져오기를 시도합니다. 이 작업이 실패하면 (일반적으로 서버 지원이 없기 때문에) 저장소의 전체 가져오기로 대체됩니다.

git_repository보다 http_archive를 선호합니다. 이유는 다음과 같습니다.

  • Git 저장소 규칙은 시스템 git(1)에 종속되는 반면, HTTP 다운로더는 Bazel에 내장되어 있으며 시스템 종속 항목이 없습니다.
  • http_archive는 미러로 urls 목록을 지원하고 git_repository는 단일 remote만 지원합니다.
  • http_archive저장소 캐시와 호환되지만 git_repository는 호환되지 않습니다. 자세한 내용은 #5116을 참고하세요.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

branch 문자열, 선택사항

원격 저장소의 브랜치를 확인했습니다. 브랜치, 태그 또는 커밋 중 하나를 정확히 지정해야 합니다.

build_file 라벨, 선택사항

이 저장소의 BUILD 파일로 사용할 파일입니다. 이 속성은 절대 라벨입니다(기본 저장소에는 '@//' 사용). 파일 이름이 BUILD일 필요는 없지만 BUILD일 수 있습니다. 저장소의 실제 BUILD 파일과 구별하기 위해 BUILD.new-repo-name과 같은 이름을 지정하는 것이 좋습니다.

build_file_content 문자열(선택사항)

이 저장소의 BUILD 파일 콘텐츠입니다.

commit 문자열(선택사항)

체크아웃할 특정 커밋입니다. 브랜치, 태그, 커밋 중 하나를 정확히 지정해야 합니다.

init_submodules 불리언(선택사항)

저장소에서 하위 모듈을 클론할지 여부입니다.

patch_args 문자열 목록(선택사항)

패치 도구에 제공된 인수입니다. 기본값은 -p0이지만 git에서 생성된 패치에는 일반적으로 -p1이 필요합니다. -p 인수가 여러 개 지정되면 마지막 인수가 적용됩니다. -p 이외의 인수가 지정된 경우 Bazel은 Bazel 네이티브 패치 구현 대신 패치 명령줄 도구를 사용하도록 대체합니다. 패치 명령줄 도구로 대체하고 patch_tool 속성이 지정되지 않은 경우 `patch` 가 사용됩니다.

patch_cmds 문자열 목록, 선택사항

패치가 적용된 후 Linux/Macos에 적용할 Bash 명령어의 시퀀스입니다.

patch_cmds_win 문자열 목록(선택사항)

패치가 적용된 후 Windows에 적용할 PowerShell 명령어 시퀀스입니다. 이 속성을 설정하지 않으면 Windows에서 patch_cmds가 실행되며, 이 경우 Bash 바이너리가 있어야 합니다.

patch_tool 문자열, 선택사항

사용할 패치(1) 유틸리티입니다. 이 옵션을 지정하면 Bazel은 Bazel 네이티브 패치 구현 대신 지정된 패치 도구를 사용합니다.

patches 라벨 목록, 선택사항

보관 파일을 추출한 후 패치로 적용할 파일 목록입니다. 기본적으로는 퍼징 일치 및 바이너리 패치를 지원하지 않는 Bazel 네이티브 패치 구현을 사용하지만, `patch_tool` 속성이 지정되거나 `patch_args` 속성에 `-p` 이외의 인수가 있는 경우 Bazel은 패치 명령줄 도구를 사용하도록 대체합니다.

recursive_init_submodules 불리언(선택사항)

저장소에서 하위 모듈을 재귀적으로 클론할지 여부입니다.

remote 문자열, 필수

원격 Git 저장소의 URI

repo_mapping 사전: 문자열 -> 문자열(선택사항)

`WORKSPACE` 컨텍스트에서만: 로컬 저장소 이름을 전역 저장소 이름으로 변환하는 사전입니다. 이렇게 하면 이 저장소의 종속 항목에 대한 워크스페이스 종속 항목 확인을 제어할 수 있습니다. 예를 들어 항목 `"@foo": "@bar"` 는 이 저장소가 `@foo`에 종속될 때마다 (예: `@foo//some:target`에 대한 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 실제로 해당 종속 항목을 확인해야 한다고 선언합니다. 이 속성은 `MODULE.bazel` 컨텍스트 (모듈 확장 프로그램의 구현 함수 내에서 저장소 규칙을 호출할 때)에서는 지원되지 _않습니다_.

shallow_since 문자열(선택사항)

지정된 커밋 이후가 아닌 선택적 날짜입니다. 태그 또는 브랜치가 지정된 경우 인수가 허용되지 않습니다 (항상 --depth=1로 클론할 수 있음). 이러한 날짜를 지정된 커밋과 가깝게 설정하면 서버가 임의 커밋의 얕은 가져오기를 지원하지 않더라도 저장소의 얕은 클론이 허용될 수 있습니다. git의 --shallow-since 구현에 버그가 있으므로 가져오기에 실패할 수 있으므로 이 속성을 사용하는 것은 권장되지 않습니다.

strip_prefix 문자열(선택사항)

추출된 파일에서 제거할 디렉터리 접두사입니다.

tag 문자열(선택사항)

태그를 체크아웃합니다. 브랜치, 태그 또는 커밋 중 하나를 정확히 지정해야 합니다.

verbose 불리언(선택사항)
workspace_file 라벨: 선택사항

이 저장소의 `WORKSPACE` 파일로 사용할 파일입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정하지 않을 수 있습니다.

workspace_file_content 문자열, 선택사항

이 저장소의 WORKSPACE 파일 콘텐츠입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정하지 않을 수 있습니다.

new_git_repository

load("@bazel//tools/build_defs/repo:git.bzl", "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 저장소를 클론하고 지정된 태그 또는 커밋을 확인한 후 바인딩할 수 있도록 타겟을 사용 설정합니다. 또한 실제로 체크아웃된 커밋의 ID와 날짜를 확인하고 이 규칙의 재현 가능한 버전 (태그일 필요는 없음)을 제공하는 매개변수가 포함된 dict를 반환합니다.

Bazel은 먼저 지정된 커밋의 얕은 가져오기를 시도합니다. 이 작업이 실패하면 (대개 서버 지원 누락으로 인해), 저장소의 전체 가져오기로 대체됩니다.

git_repository보다 http_archive를 선호합니다. 이유는 다음과 같습니다.

  • Git 저장소 규칙은 시스템 git(1)에 종속되는 반면, HTTP 다운로더는 Bazel에 내장되어 있으며 시스템 종속 항목이 없습니다.
  • http_archiveurls 목록을 미러로 지원하고 git_repository는 단일 remote만 지원합니다.
  • http_archive저장소 캐시와 호환되지만 git_repository는 호환되지 않습니다. 자세한 내용은 #5116을 참고하세요.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

branch 문자열, 선택사항

원격 저장소의 브랜치를 확인했습니다. 브랜치, 태그, 커밋 중 하나를 정확히 지정해야 합니다.

build_file 라벨, 선택사항

이 저장소의 BUILD 파일로 사용할 파일입니다. 이 속성은 절대 라벨입니다(기본 저장소에는 '@//' 사용). 파일 이름이 BUILD일 필요는 없지만 BUILD일 수 있습니다. 저장소의 실제 BUILD 파일과 구별하기 위해 BUILD.new-repo-name과 같은 이름을 지정하는 것이 좋습니다.

build_file_content 문자열(선택사항)

이 저장소의 BUILD 파일 콘텐츠입니다.

commit 문자열(선택사항)

체크아웃할 특정 커밋입니다. 브랜치, 태그, 커밋 중 하나를 정확히 지정해야 합니다.

init_submodules 불리언(선택사항)

저장소에서 하위 모듈을 클론할지 여부입니다.

patch_args 문자열 목록(선택사항)

패치 도구에 제공된 인수입니다. 기본값은 -p0이지만 git에서 생성된 패치에는 일반적으로 -p1이 필요합니다. -p 인수가 여러 개 지정되면 마지막 인수가 적용됩니다. -p 이외의 인수가 지정된 경우 Bazel은 Bazel 네이티브 패치 구현 대신 패치 명령줄 도구를 사용하도록 대체합니다. 패치 명령줄 도구로 대체하고 patch_tool 속성이 지정되지 않은 경우 `patch` 가 사용됩니다.

patch_cmds 문자열 목록, 선택사항

패치가 적용된 후 Linux/Macos에 적용할 Bash 명령어의 시퀀스입니다.

patch_cmds_win 문자열 목록(선택사항)

패치가 적용된 후 Windows에 적용할 PowerShell 명령어 시퀀스입니다. 이 속성을 설정하지 않으면 Windows에서 patch_cmds가 실행되며, 이 경우 Bash 바이너리가 있어야 합니다.

patch_tool 문자열, 선택사항

사용할 패치(1) 유틸리티입니다. 이 옵션을 지정하면 Bazel은 Bazel 네이티브 패치 구현 대신 지정된 패치 도구를 사용합니다.

patches 라벨 목록, 선택사항

보관 파일을 추출한 후 패치로 적용할 파일 목록입니다. 기본적으로는 퍼징 일치 및 바이너리 패치를 지원하지 않는 Bazel 네이티브 패치 구현을 사용하지만, `patch_tool` 속성이 지정되거나 `patch_args` 속성에 `-p` 이외의 인수가 있는 경우 Bazel은 패치 명령줄 도구를 사용하도록 대체합니다.

recursive_init_submodules 불리언(선택사항)

저장소에서 하위 모듈을 재귀적으로 클론할지 여부입니다.

remote 문자열, 필수

원격 Git 저장소의 URI

repo_mapping 사전: 문자열 -> 문자열(선택사항)

`WORKSPACE` 컨텍스트에서만: 로컬 저장소 이름을 전역 저장소 이름으로 변환하는 사전입니다. 이렇게 하면 이 저장소의 종속 항목에 대한 워크스페이스 종속 항목 확인을 제어할 수 있습니다. 예를 들어 항목 "@foo": "@bar"`는 이 저장소가 항상 `@foo`에 종속될 때 (예: `@foo//some:target`의 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내의 종속 항목을 실제로 해결해야 한다고 선언합니다. 이 속성은 `MODULE.bazel` 저장소 규칙 내에서 지원되지 _않습니다_(모듈에 있는 경우).

shallow_since 문자열(선택사항)

지정된 커밋 이후가 아닌 선택적 날짜입니다. 태그 또는 브랜치가 지정된 경우 인수가 허용되지 않습니다 (항상 --depth=1로 클론할 수 있음). 이러한 날짜를 지정된 커밋과 가깝게 설정하면 서버가 임의 커밋의 얕은 가져오기를 지원하지 않더라도 저장소의 얕은 클론이 허용될 수 있습니다. git의 --shallow-since 구현에 버그가 있으므로 가져오기에 실패할 수 있으므로 이 속성을 사용하는 것은 권장되지 않습니다.

strip_prefix 문자열(선택사항)

추출된 파일에서 제거할 디렉터리 접두사입니다.

tag 문자열(선택사항)

태그를 체크아웃합니다. 브랜치, 태그 또는 커밋 중 하나를 정확히 지정해야 합니다.

verbose 불리언(선택사항)
workspace_file 라벨, 선택사항

이 저장소의 `WORKSPACE` 파일로 사용할 파일입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정할 수 있지만 둘 다 지정할 수는 없습니다.

workspace_file_content 문자열, 선택사항

이 저장소의 WORKSPACE 파일 콘텐츠입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정하지 않을 수 있습니다.