quy tắc kho lưu trữ git

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

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 cam kết và cung cấp các mục tiêu của kho lưu trữ đó để liên kết. Đồng thời, hãy xác định mã nhận dạng của cam kết thực sự được thanh toán và ngày chuyển, đồng thời trả về một bản chính tả với các tham số cung cấp phiên bản có thể mô phỏng của quy tắc này (đây không nhất thiết là thẻ).

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

Ưu tiên http_archive hơn git_repository. Lý do là:

  • Các quy tắc 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ích hợp 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, còn git_repository chỉ hỗ trợ một remote duy nhất.
  • http_archive hoạt động với bộ nhớ đệm của kho lưu trữ, nhưng không hoạt động với git_repository. Xem #5116 để biết thêm thông tin.

Thuộc tính

name Tên; bắt buộc

Tên dành riêng 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 để xem. Phải chỉ định chính xác một nhánh, thẻ hoặc lệnh xác nhận.

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

Tệp cần sử 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). Tệp không cần phải được đặt tên là BUILD nhưng có thể là (tên như BUILD.new-repo-name có thể hoạt động tốt để 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 trong 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. Phải chỉ định chính xác một nhánh, thẻ hoặc lệnh xác nhận.

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 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á 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 -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 Bazel. Khi quay lại công cụ dòng lệnh vá và thuộc tính patch_tool không được chỉ định, "patch" (bản vá) sẽ được sử dụng.

patch_cmds Danh sách chuỗi; không bắt buộc

Áp dụng trình tự các lệnh Bash trên Linux/Macos sau khi áp dụng các bản vá.

patch_cmds_win Danh sách 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 và cần phải có tệp nhị phân Bash.

patch_tool Chuỗi; không bắt buộc

Tiện ích bản vá(1) để 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 được áp dụng làm 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ợ 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 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 đệ 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 Từ điển: Chuỗi -> Chuỗi; bắt buộc

Từ điển, từ tên kho lưu trữ cục bộ đến tên kho lưu trữ toàn cục. Nhờ vậy, bạn có thể kiểm soát việc 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, bất cứ lúc nào 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ì nó thực sự sẽ giải quyết phần phụ thuộc đó trong `@bar` được khai báo toàn cục trong `@bar//some:target`).

shallow_since Chuỗi; không bắt buộc

ngày không bắt buộc, không sau cam kết được chỉ định; không cho phép đối số nếu thẻ hoặc nhánh được chỉ định (luôn có thể sao chép bằng --length=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 của kho lưu trữ ngay cả khi máy chủ không hỗ trợ các lần tìm nạp nông cho các thay đổi tuỳ ý. Do các lỗi trong quá trình triển khai --shallow-when của git, bạn không nên sử dụng thuộc tính này vì thuộc tính này 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 để xoá khỏi các tệp đã trích xuất.

tag Chuỗi; không bắt buộc

trong kho lưu trữ từ xa để xem. Phải chỉ định chính xác một nhánh, thẻ hoặc lệnh xác nhận.

verbose Boolean; không bắt buộc
workspace_file Nhãn; không bắt buộc

Tệp cần 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 thể chỉ định cả hai, hoặc không thể chỉ định cả hai.

workspace_file_content Chuỗi; 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 thể chỉ định cả hai, hoặc 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 cam kết và cung cấp các mục tiêu của kho lưu trữ đó để liên kết. Đồng thời, hãy xác định mã nhận dạng của cam kết thực sự được thanh toán và ngày chuyển, đồng thời trả về một bản chính tả với các tham số cung cấp phiên bản có thể mô phỏng của quy tắc này (đây không nhất thiết là thẻ).

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

Ưu tiên http_archive hơn git_repository. Lý do là:

  • Các quy tắc 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ích hợp 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, còn git_repository chỉ hỗ trợ một remote duy nhất.
  • http_archive hoạt động với bộ nhớ đệm của kho lưu trữ, nhưng không hoạt động với git_repository. Xem #5116 để biết thêm thông tin.

Thuộc tính

name Tên; bắt buộc

Tên dành riêng 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 để xem. Phải chỉ định chính xác một nhánh, thẻ hoặc lệnh xác nhận.

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

Tệp cần sử 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). Tệp không cần phải được đặt tên là BUILD nhưng có thể là (tên như BUILD.new-repo-name có thể hoạt động tốt để 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 trong 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. Phải chỉ định chính xác một nhánh, thẻ hoặc lệnh xác nhận.

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 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á 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 -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 Bazel. Khi quay lại công cụ dòng lệnh vá và thuộc tính patch_tool không được chỉ định, "patch" (bản vá) sẽ được sử dụng.

patch_cmds Danh sách chuỗi; không bắt buộc

Áp dụng trình tự các lệnh Bash trên Linux/Macos sau khi áp dụng các bản vá.

patch_cmds_win Danh sách 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 và cần phải có tệp nhị phân Bash.

patch_tool Chuỗi; không bắt buộc

Tiện ích bản vá(1) để 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 được áp dụng làm 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ợ 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 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 đệ 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 Từ điển: Chuỗi -> Chuỗi; bắt buộc

Từ điển, từ tên kho lưu trữ cục bộ đến tên kho lưu trữ toàn cục. Nhờ vậy, bạn có thể kiểm soát việc 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, bất cứ lúc nào 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ì nó thực sự sẽ giải quyết phần phụ thuộc đó trong `@bar` được khai báo toàn cục trong `@bar//some:target`).

shallow_since Chuỗi; không bắt buộc

ngày không bắt buộc, không sau cam kết được chỉ định; không cho phép đối số nếu thẻ hoặc nhánh được chỉ định (luôn có thể sao chép bằng --length=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 của kho lưu trữ ngay cả khi máy chủ không hỗ trợ các lần tìm nạp nông cho các thay đổi tuỳ ý. Do các lỗi trong quá trình triển khai --shallow-when của git, bạn không nên sử dụng thuộc tính này vì thuộc tính này 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 để xoá khỏi các tệp đã trích xuất.

tag Chuỗi; không bắt buộc

trong kho lưu trữ từ xa để xem. Phải chỉ định chính xác một nhánh, thẻ hoặc lệnh xác nhận.

verbose Boolean; không bắt buộc
workspace_file Nhãn; không bắt buộc

Tệp cần 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 thể chỉ định cả hai, hoặc không thể chỉ định cả hai.

workspace_file_content Chuỗi; 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 thể chỉ định cả hai, hoặc không thể chỉ định cả hai.