Bạn có thể tải các hàm sau đây từ @bazel_tools//tools/build_defs/repo:git.bzl
.
Quy tắc sao chép kho lưu trữ git bên ngoài.
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_strip, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
Sao chép một kho lưu trữ git bên ngoài.
Sao chép một kho lưu trữ Git, kiểm tra thẻ hoặc cam kết đã chỉ định và cung cấp các mục tiêu của kho lưu trữ đó để liên kết. Ngoài ra, hãy xác định mã nhận dạng của cam kết thực sự đã được kiểm tra và ngày của cam kết đó, đồng thời trả về một từ điển có các tham số cung cấp phiên bản có thể tái tạo của quy tắc này (không nhất thiết phải là thẻ).
Trước tiên, Bazel sẽ cố gắng thực hiện một thao tác tìm nạp nông chỉ cho cam kết đã chỉ định. Nếu không thành công (thường là do thiếu sự hỗ trợ của máy chủ), thì thao tác này sẽ quay lại quy trình tìm nạp đầy đủ của kho lưu trữ.
Ưu tiên http_archive
hơn git_repository
.
Lý do là:
- Các quy tắc kho lưu trữ Git phụ thuộc vào
git(1)
của hệ thống, trong khi trình tải xuống HTTP được tích hợp vào Bazel và không có phần phụ thuộc hệ thống. http_archive
hỗ trợ một danh sáchurls
dưới dạng bản sao vàgit_repository
chỉ hỗ trợ mộtremote
duy nhất.http_archive
hoạt động với bộ nhớ đệm kho lưu trữ, nhưng không hoạt động vớigit_repository
. Hãy xem #5116 để biết thêm thông tin.
THUỘC TÍNH
name |
Tên; bắt buộc
Tên duy nhất cho kho lưu trữ này. |
branch |
Chuỗi; không bắt buộc
nhánh trong kho lưu trữ từ xa để kiểm tra. Bạn phải chỉ định chính xác một nhánh, thẻ hoặc cam kết. |
build_file |
Nhãn; không bắt buộc
Tệp dùng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là một nhãn tuyệt đối (sử dụng "@//" cho kho lưu trữ chính). Bạn không cần đặt tên tệp là BUILD, nhưng có thể đặt tên tệp là (chẳng hạn như BUILD.new-repo-name có thể phù hợp để phân biệt tệp này với các tệp BUILD thực tế của kho lưu trữ. |
build_file_content |
Chuỗi; không bắt buộc
Nội dung của tệp BUILD cho kho lưu trữ này. |
commit |
Chuỗi; không bắt buộc
cam kết cụ thể sẽ được kiểm tra. Bạn phải chỉ định chính xác một nhánh, thẻ hoặc cam kết. |
init_submodules |
Boolean; không bắt buộc
Xác định xem có sao chép các mô-đun con trong kho lưu trữ hay không. |
patch_args |
Danh sách các chuỗi; không bắt buộc
Các đối số được cung cấp cho công cụ vá. Mặc định là -p0 (xem thuộc tính "patch_strip"), tuy nhiên, bạn thường cần -p1 cho các bản vá do git tạo. Nếu bạn chỉ định nhiều đối số -p, thì đối số cuối cùng sẽ có hiệu lực.Nếu bạn chỉ định các đối số khác ngoài -p, Bazel sẽ quay lại sử dụng công cụ dòng lệnh vá thay vì triển khai bản vá gốc của Bazel. Khi quay lại công cụ dòng lệnh vá và bạn không chỉ định thuộc tính patch_tool, thì hệ thống sẽ sử dụng "patch". |
patch_cmds |
Danh sách các chuỗi; không bắt buộc
Trình tự các lệnh Bash sẽ được áp dụng trên Linux/MacOS sau khi các bản vá được áp dụng. |
patch_cmds_win |
Danh sách các chuỗi; không bắt buộc
Trình tự các lệnh Powershell sẽ được áp dụng trên Windows sau khi áp dụng các bản vá. Nếu bạn không đặt thuộc tính này, patch_cmds sẽ được thực thi trên Windows, yêu cầu phải có tệp nhị phân Bash. |
patch_strip |
Số nguyên; không bắt buộc
Khi được đặt thành "N", điều này tương đương với việc chèn "-pN" vào đầu "patch_args". |
patch_tool |
Chuỗi; không bắt buộc
Tiện ích patch(1) để sử dụng. Nếu bạn chỉ định tham số này, Bazel sẽ sử dụng công cụ vá lỗi được chỉ định thay vì triển khai vá lỗi gốc của Bazel. |
patches |
Danh sách nhãn; không bắt buộc
Danh sách các tệp sẽ được áp dụng làm bản vá sau khi giải nén tệp lưu trữ. Theo mặc định, nó sử dụng chế độ triển khai bản vá gốc của Bazel không hỗ trợ so khớp mờ và bản vá nhị phân, nhưng Bazel sẽ quay lại sử dụng công cụ dòng lệnh patch nếu thuộc tính `patch_tool` được chỉ định hoặc có các đối số khác ngoài `-p` trong thuộc tính `patch_args`. |
recursive_init_submodules |
Boolean; không bắt buộc
Có sao chép đệ quy các mô-đun con trong kho lưu trữ hay không. |
remote |
Chuỗi; bắt buộc
URI của kho lưu trữ Git từ xa |
repo_mapping |
Dictionary: String -> String; không bắt buộc
Chỉ trong ngữ cảnh "WORKSPACE": một từ điển từ tên kho lưu trữ cục bộ đến tên kho lưu trữ chung. Điều này cho phép kiểm soát quá trình phân giải phần phụ thuộc của không gian làm việc đối với các phần phụ thuộc của kho lưu trữ này. Ví dụ: mục "@foo": "@bar" khai báo rằng, bất cứ khi nào kho lưu trữ này phụ thuộc vào "@foo" (chẳng hạn như một phần phụ thuộc vào "@foo//some:target", thì kho lưu trữ này thực sự phải phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target"). Thuộc tính này _không_ được hỗ trợ trong ngữ cảnh "MODULE.bazel" (khi gọi một quy tắc kho lưu trữ trong hàm triển khai của tiện ích mô-đun). |
shallow_since |
Chuỗi; không bắt buộc
một ngày không bắt buộc, không được sau cam kết đã chỉ định; đối số này không được phép nếu bạn chỉ định một thẻ hoặc nhánh (luôn có thể sao chép bằng --depth=1). Việc đặt ngày như vậy gần với cam kết đã chỉ định có thể cho phép sao chép nông kho lưu trữ ngay cả khi máy chủ không hỗ trợ tìm nạp nông các cam kết tuỳ ý. Do các lỗi trong quá trình triển khai --shallow-since của git, bạn không nên sử dụng thuộc tính này vì có thể dẫn đến lỗi tìm nạp. |
strip_prefix |
Chuỗi; không bắt buộc
Tiền tố thư mục cần loại bỏ khỏi các tệp đã trích xuất. |
tag |
Chuỗi; không bắt buộc
thẻ trong kho lưu trữ từ xa để kiểm tra. Bạn phải chỉ định chính xác một nhánh, thẻ hoặc cam kết. |
verbose |
Boolean; không bắt buộc |
workspace_file |
Nhãn; không bắt buộc
Tệp dùng làm tệp "WORKSPACE" cho kho lưu trữ này. Bạn có thể chỉ định `workspace_file` hoặc `workspace_file_content`, hoặc không chỉ định cả hai, nhưng không được chỉ định cả hai. |
workspace_file_content |
Chuỗi; không bắt buộc
Nội dung cho tệp WORKSPACE của kho lưu trữ này. Bạn có thể chỉ định `workspace_file` hoặc `workspace_file_content`, hoặc không chỉ định cả hai, nhưng không được chỉ định cả hai. |
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_strip, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
Sao chép một kho lưu trữ git bên ngoài.
Sao chép một kho lưu trữ Git, kiểm tra thẻ hoặc cam kết đã chỉ định và cung cấp các mục tiêu của kho lưu trữ đó để liên kết. Ngoài ra, hãy xác định mã nhận dạng của cam kết thực sự đã được kiểm tra và ngày của cam kết đó, đồng thời trả về một từ điển có các tham số cung cấp phiên bản có thể tái tạo của quy tắc này (không nhất thiết phải là thẻ).
Trước tiên, Bazel sẽ cố gắng thực hiện một thao tác tìm nạp nông chỉ cho cam kết đã chỉ định. Nếu không thành công (thường là do thiếu sự hỗ trợ của máy chủ), thì thao tác này sẽ quay lại quy trình tìm nạp đầy đủ của kho lưu trữ.
Ưu tiên http_archive
hơn git_repository
.
Lý do là:
- Các quy tắc kho lưu trữ Git phụ thuộc vào
git(1)
của hệ thống, trong khi trình tải xuống HTTP được tích hợp vào Bazel và không có phần phụ thuộc hệ thống. http_archive
hỗ trợ một danh sáchurls
dưới dạng bản sao vàgit_repository
chỉ hỗ trợ mộtremote
duy nhất.http_archive
hoạt động với bộ nhớ đệm kho lưu trữ, nhưng không hoạt động vớigit_repository
. Hãy xem #5116 để biết thêm thông tin.
THUỘC TÍNH
name |
Tên; bắt buộc
Tên duy nhất cho kho lưu trữ này. |
branch |
Chuỗi; không bắt buộc
nhánh trong kho lưu trữ từ xa để kiểm tra. Bạn phải chỉ định chính xác một nhánh, thẻ hoặc cam kết. |
build_file |
Nhãn; không bắt buộc
Tệp dùng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là một nhãn tuyệt đối (sử dụng "@//" cho kho lưu trữ chính). Bạn không cần đặt tên tệp là BUILD, nhưng có thể đặt tên tệp là (chẳng hạn như BUILD.new-repo-name có thể phù hợp để phân biệt tệp này với các tệp BUILD thực tế của kho lưu trữ. |
build_file_content |
Chuỗi; không bắt buộc
Nội dung của tệp BUILD cho kho lưu trữ này. |
commit |
Chuỗi; không bắt buộc
cam kết cụ thể sẽ được kiểm tra. Bạn phải chỉ định chính xác một nhánh, thẻ hoặc cam kết. |
init_submodules |
Boolean; không bắt buộc
Xác định xem có sao chép các mô-đun con trong kho lưu trữ hay không. |
patch_args |
Danh sách các chuỗi; không bắt buộc
Các đối số được cung cấp cho công cụ vá. Mặc định là -p0 (xem thuộc tính "patch_strip"), tuy nhiên, bạn thường cần -p1 cho các bản vá do git tạo. Nếu bạn chỉ định nhiều đối số -p, thì đối số cuối cùng sẽ có hiệu lực.Nếu bạn chỉ định các đối số khác ngoài -p, Bazel sẽ quay lại sử dụng công cụ dòng lệnh vá thay vì triển khai bản vá gốc của Bazel. Khi quay lại công cụ dòng lệnh vá và bạn không chỉ định thuộc tính patch_tool, thì hệ thống sẽ sử dụng "patch". |
patch_cmds |
Danh sách các chuỗi; không bắt buộc
Trình tự các lệnh Bash sẽ được áp dụng trên Linux/MacOS sau khi các bản vá được áp dụng. |
patch_cmds_win |
Danh sách các chuỗi; không bắt buộc
Trình tự các lệnh Powershell sẽ được áp dụng trên Windows sau khi áp dụng các bản vá. Nếu bạn không đặt thuộc tính này, patch_cmds sẽ được thực thi trên Windows, yêu cầu phải có tệp nhị phân Bash. |
patch_strip |
Số nguyên; không bắt buộc
Khi được đặt thành "N", điều này tương đương với việc chèn "-pN" vào đầu "patch_args". |
patch_tool |
Chuỗi; không bắt buộc
Tiện ích patch(1) để sử dụng. Nếu bạn chỉ định tham số này, Bazel sẽ sử dụng công cụ vá lỗi được chỉ định thay vì triển khai vá lỗi gốc của Bazel. |
patches |
Danh sách nhãn; không bắt buộc
Danh sách các tệp sẽ được áp dụng làm bản vá sau khi giải nén tệp lưu trữ. Theo mặc định, nó sử dụng chế độ triển khai bản vá gốc của Bazel không hỗ trợ so khớp mờ và bản vá nhị phân, nhưng Bazel sẽ quay lại sử dụng công cụ dòng lệnh patch nếu thuộc tính `patch_tool` được chỉ định hoặc có các đối số khác ngoài `-p` trong thuộc tính `patch_args`. |
recursive_init_submodules |
Boolean; không bắt buộc
Có sao chép đệ quy các mô-đun con trong kho lưu trữ hay không. |
remote |
Chuỗi; bắt buộc
URI của kho lưu trữ Git từ xa |
repo_mapping |
Dictionary: String -> String; không bắt buộc
Chỉ trong ngữ cảnh "WORKSPACE": một từ điển từ tên kho lưu trữ cục bộ đến tên kho lưu trữ chung. Điều này cho phép kiểm soát quá trình phân giải phần phụ thuộc của không gian làm việc đối với các phần phụ thuộc của kho lưu trữ này. Ví dụ: mục "@foo": "@bar" khai báo rằng, bất cứ khi nào kho lưu trữ này phụ thuộc vào "@foo" (chẳng hạn như một phần phụ thuộc vào "@foo//some:target", thì kho lưu trữ này thực sự phải phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target"). Thuộc tính này _không_ được hỗ trợ trong ngữ cảnh "MODULE.bazel" (khi gọi một quy tắc kho lưu trữ trong hàm triển khai của tiện ích mô-đun). |
shallow_since |
Chuỗi; không bắt buộc
một ngày không bắt buộc, không được sau cam kết đã chỉ định; đối số này không được phép nếu bạn chỉ định một thẻ hoặc nhánh (luôn có thể sao chép bằng --depth=1). Việc đặt ngày như vậy gần với cam kết đã chỉ định có thể cho phép sao chép nông kho lưu trữ ngay cả khi máy chủ không hỗ trợ tìm nạp nông các cam kết tuỳ ý. Do các lỗi trong quá trình triển khai --shallow-since của git, bạn không nên sử dụng thuộc tính này vì có thể dẫn đến lỗi tìm nạp. |
strip_prefix |
Chuỗi; không bắt buộc
Tiền tố thư mục cần loại bỏ khỏi các tệp đã trích xuất. |
tag |
Chuỗi; không bắt buộc
thẻ trong kho lưu trữ từ xa để kiểm tra. Bạn phải chỉ định chính xác một nhánh, thẻ hoặc cam kết. |
verbose |
Boolean; không bắt buộc |
workspace_file |
Nhãn; không bắt buộc
Tệp dùng làm tệp "WORKSPACE" cho kho lưu trữ này. Bạn có thể chỉ định `workspace_file` hoặc `workspace_file_content`, hoặc không chỉ định cả hai, nhưng không được chỉ định cả hai. |
workspace_file_content |
Chuỗi; không bắt buộc
Nội dung cho tệp WORKSPACE của kho lưu trữ này. Bạn có thể chỉ định `workspace_file` hoặc `workspace_file_content`, hoặc không chỉ định cả hai, nhưng không được chỉ định cả hai. |