quy tắc kho lưu trữ git

Các hàm sau đây có thể được tải 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

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)

Sao chép kho lưu trữ git bên ngoài.

Sao chép kho lưu trữ Git, kiểm tra thẻ được chỉ định hoặc xác nhận, và sẽ cung cấp các mục tiêu để liên kết. Đồng thời xác định id của xác nhận thực sự đã kiểm tra và ngày của nó, đồng thời trả về một lệnh chính tả 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 (mà một thẻ không nhất thiết là ).

Trước tiên, Bazel sẽ cố gắng thực hiện một tìm nạp nông chỉ đối với lệnh xác nhận đã chỉ định. Nếu không thành công (thường là do thiếu hỗ trợ của máy chủ), thì sẽ trở lại tìm nạp toàn bộ kho lưu trữ.

Ưu tiên http_archive đến git_repository. Lý do là:

  • Quy tắc kho lưu trữ Git phụ thuộc vào hệ thống git(1) trong khi trình tải xuống HTTP được tạo vào Bazel và không có phần phụ thuộc hệ thống.
  • http_archive hỗ trợ danh sách urls dưới dạng bản sao và git_repository chỉ hỗ trợ một remote.
  • http_archive hoạt động với bộ nhớ đệm của kho lưu trữ, nhưng không git_repository. Xem #5116 để biết thêm thông tin.

Thuộc tính

name Tên; bắt buộc

Tên riêng biệt cho kho lưu trữ này.

branch String; 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 trong số các nhánh, thẻ hoặc cam kết.

build_file Nhãn; không bắt buộc

Tệp để sử dụng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là nhãn tuyệt đối (sử dụng '@//' cho kho lưu trữ chính). Tệp này không cần phải được đặt tên là BUILD, nhưng có thể là (chẳng hạn như BUILD.new-repo-name có thể hoạt động tốt để phân biệt với các tệp BUILD thực tế của kho lưu trữ.

build_file_content String; không bắt buộc

Nội dung của tệp BUILD cho kho lưu trữ này.

commit String; không bắt buộc

cam kết cụ thể được kiểm tra. Bạn phải chỉ định chính xác một trong số các nhánh, thẻ hoặc cam kết.

init_submodules Boolean; không bắt buộc

Liệu 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, tuy nhiên, -p1 thường sẽ cần thiết cho các bản vá được 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 các đối số khác không phải -p được chỉ định, 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 Bazel. Khi quay lại dùng công cụ dòng lệnh vá và thuộc tính patch_tool không được chỉ định, "patch" sẽ được sử dụng.

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 áp dụng bản vá.

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 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 và buộc phải có tệp nhị phân Bash.

patch_tool String; không bắt buộc

Tiện ích patch(1) nên sử dụng. Nếu bạn chỉ định điều này, Bazel sẽ sử dụng công cụ vá được chỉ định thay vì triển khai bản vá gốc 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 dưới dạng bản vá sau khi giải nén bản lưu trữ. Theo mặc định, công cụ này sử dụng phương thức triển khai bản vá gốc Bazel không hỗ trợ tính năng so khớp mờ và bản vá nhị phân. Tuy nhiên, Bazel sẽ quay lại sử dụng công cụ dòng lệnh của bản vá nếu thuộc tính "patch_tool" được chỉ định hoặc có các đối số khác "-p" trong thuộc tính "patch_args".

recursive_init_submodules Boolean; không bắt buộc

Liệu có sao chép các mô-đun con theo cách đệ quy trong kho lưu trữ hay không.

remote String; bắt buộc

URI của kho lưu trữ Git từ xa

repo_mapping Từ điển: Chuỗi -> String; bắt buộc

Một từ điển từ tên kho lưu trữ cục bộ thành tên kho lưu trữ toàn cục. Điều này cho phép bạn kiểm soát quá trình phân giải phần phụ thuộc không gian làm việc cho các phần phụ thuộc của kho lưu trữ này.

Ví dụ: một mục "@foo": "@bar"" khai báo rằng mỗi khi kho lưu trữ này phụ thuộc vào "@foo" (chẳng hạn như phần phụ thuộc trên "@foo//some:target", thì phần phụ thuộc đó sẽ thực sự giải quyết phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target").

shallow_since String; không bắt buộc

ngày không bắt buộc, không phải sau ngày cam kết được chỉ định; đối số không được cho phép nếu thẻ hoặc nhánh được chỉ định (luôn có thể được sao chép bằng --depth=1). Việc đặt ngày như vậy gần với cam kết được chỉ định có thể cho phép sao chép kho lưu trữ ở chế độ nông ngay cả khi máy chủ không hỗ trợ tìm nạp nông các cam kết tuỳ ý. Do 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 String; không bắt buộc

Tiền tố thư mục để xóa khỏi các tệp đã giải nén.

tag String; không bắt buộc

trong kho lưu trữ từ xa để kiểm tra. Bạn phải chỉ định chính xác một trong số các 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 này để sử 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, nhưng không thể chỉ định cả hai.

workspace_file_content String; không bắt buộc

Nội dung của 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, nhưng không thể chỉ định cả hai.

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)

Sao chép kho lưu trữ git bên ngoài.

Sao chép kho lưu trữ Git, kiểm tra thẻ được chỉ định hoặc xác nhận, và sẽ cung cấp các mục tiêu để liên kết. Đồng thời xác định id của xác nhận thực sự đã kiểm tra và ngày của nó, đồng thời trả về một lệnh chính tả 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 (mà một thẻ không nhất thiết là ).

Trước tiên, Bazel sẽ cố gắng thực hiện một tìm nạp nông chỉ đối với lệnh xác nhận đã chỉ định. Nếu không thành công (thường là do thiếu hỗ trợ của máy chủ), thì sẽ trở lại tìm nạp toàn bộ kho lưu trữ.

Ưu tiên http_archive đến git_repository. Lý do là:

  • Quy tắc kho lưu trữ Git phụ thuộc vào hệ thống git(1) trong khi trình tải xuống HTTP được tạo vào Bazel và không có phần phụ thuộc hệ thống.
  • http_archive hỗ trợ danh sách urls dưới dạng bản sao và git_repository chỉ hỗ trợ một remote.
  • http_archive hoạt động với bộ nhớ đệm của kho lưu trữ, nhưng không git_repository. Xem #5116 để biết thêm thông tin.

Thuộc tính

name Tên; bắt buộc

Tên riêng biệt cho kho lưu trữ này.

branch String; 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 trong số các nhánh, thẻ hoặc cam kết.

build_file Nhãn; không bắt buộc

Tệp để sử dụng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là nhãn tuyệt đối (sử dụng '@//' cho kho lưu trữ chính). Tệp này không cần phải được đặt tên là BUILD, nhưng có thể là (chẳng hạn như BUILD.new-repo-name có thể hoạt động tốt để phân biệt với các tệp BUILD thực tế của kho lưu trữ.

build_file_content String; không bắt buộc

Nội dung của tệp BUILD cho kho lưu trữ này.

commit String; không bắt buộc

cam kết cụ thể được kiểm tra. Bạn phải chỉ định chính xác một trong số các nhánh, thẻ hoặc cam kết.

init_submodules Boolean; không bắt buộc

Liệu 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, tuy nhiên, -p1 thường sẽ cần thiết cho các bản vá được 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 các đối số khác không phải -p được chỉ định, 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 Bazel. Khi quay lại dùng công cụ dòng lệnh vá và thuộc tính patch_tool không được chỉ định, "patch" sẽ được sử dụng.

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 áp dụng bản vá.

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 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 và buộc phải có tệp nhị phân Bash.

patch_tool String; không bắt buộc

Tiện ích patch(1) nên sử dụng. Nếu bạn chỉ định điều này, Bazel sẽ sử dụng công cụ vá được chỉ định thay vì triển khai bản vá gốc 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 dưới dạng bản vá sau khi giải nén bản lưu trữ. Theo mặc định, công cụ này sử dụng phương thức triển khai bản vá gốc Bazel không hỗ trợ tính năng so khớp mờ và bản vá nhị phân. Tuy nhiên, Bazel sẽ quay lại sử dụng công cụ dòng lệnh của bản vá nếu thuộc tính "patch_tool" được chỉ định hoặc có các đối số khác "-p" trong thuộc tính "patch_args".

recursive_init_submodules Boolean; không bắt buộc

Liệu có sao chép các mô-đun con theo cách đệ quy trong kho lưu trữ hay không.

remote String; bắt buộc

URI của kho lưu trữ Git từ xa

repo_mapping Từ điển: Chuỗi -> String; bắt buộc

Một từ điển từ tên kho lưu trữ cục bộ thành tên kho lưu trữ toàn cục. Điều này cho phép bạn kiểm soát quá trình phân giải phần phụ thuộc không gian làm việc cho các phần phụ thuộc của kho lưu trữ này.

Ví dụ: một mục "@foo": "@bar"" khai báo rằng mỗi khi kho lưu trữ này phụ thuộc vào "@foo" (chẳng hạn như phần phụ thuộc trên "@foo//some:target", thì phần phụ thuộc đó sẽ thực sự giải quyết phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target").

shallow_since String; không bắt buộc

ngày không bắt buộc, không phải sau ngày cam kết được chỉ định; đối số không được cho phép nếu thẻ hoặc nhánh được chỉ định (luôn có thể được sao chép bằng --depth=1). Việc đặt ngày như vậy gần với cam kết được chỉ định có thể cho phép sao chép kho lưu trữ ở chế độ nông ngay cả khi máy chủ không hỗ trợ tìm nạp nông các cam kết tuỳ ý. Do 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 String; không bắt buộc

Tiền tố thư mục để xóa khỏi các tệp đã giải nén.

tag String; không bắt buộc

trong kho lưu trữ từ xa để kiểm tra. Bạn phải chỉ định chính xác một trong số các 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 này để sử 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, nhưng không thể chỉ định cả hai.

workspace_file_content String; không bắt buộc

Nội dung của 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, nhưng không thể chỉ định cả hai.