คุณโหลดฟังก์ชันต่อไปนี้ได้จาก
@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, canonical_id, commit, init_submodules,
patch_args, patch_cmds, patch_cmds_win, patch_strip, patch_tool, patches,
recursive_init_submodules, remote, remote_module_file_integrity,
remote_module_file_urls, remote_patch_strip, remote_patches, shallow_since,
sparse_checkout_file, sparse_checkout_patterns, strip_prefix, tag, verbose,
workspace_file, workspace_file_content)
โคลนที่เก็บ Git ภายนอก
โคลนที่เก็บ Git ตรวจสอบสาขา แท็ก หรือคอมมิตที่ระบุ และ ทำให้เป้าหมายพร้อมสำหรับการเชื่อมโยง หากไม่ได้ระบุสาขา แท็ก หรือคอมมิต ให้ตรวจสอบสาขาเริ่มต้นของที่เก็บ นอกจากนี้ ให้ระบุรหัส และวันที่ของคอมมิตที่เช็คเอาต์ และส่งคืนพจนานุกรมที่มี พารามิเตอร์ที่ระบุเวอร์ชันที่ทำซ้ำได้ของกฎนี้ (ซึ่งแท็กหรือ สาขาอาจไม่ใช่)
Bazel จะพยายามดึงข้อมูลแบบตื้นของเฉพาะคอมมิตที่ระบุก่อน หากไม่สำเร็จ (มักเกิดจากการที่เซิร์ฟเวอร์ไม่รองรับ) ระบบจะกลับไปใช้ การดึงข้อมูลที่สมบูรณ์ของที่เก็บ
ต้องการ http_archive มากกว่า git_repository
สาเหตุมีดังนี้
- กฎของที่เก็บ Git ขึ้นอยู่กับระบบ
git(1)ในขณะที่ตัวดาวน์โหลด HTTP สร้างขึ้นใน Bazel และไม่มีการขึ้นต่อกันของระบบ http_archiveรองรับรายการurlsเป็นมิเรอร์ และgit_repositoryรองรับเฉพาะremoteเดียวhttp_archiveใช้ได้กับแคชที่เก็บ แต่ใช้ไม่ได้กับgit_repositoryดูข้อมูลเพิ่มเติมได้ที่ #5116
แอตทริบิวต์
name |
ชื่อ (ต้องระบุ)
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
branch |
String; ไม่บังคับ
Branch ในที่เก็บระยะไกลที่จะเช็คเอาต์ ต้องระบุสาขา แท็ก หรือคอมมิตอย่างใดอย่างหนึ่งที่แน่นอน |
build_file |
ป้ายกำกับ (ไม่บังคับ)
ไฟล์ที่จะใช้เป็นไฟล์ BUILD สำหรับที่เก็บนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สำหรับที่เก็บหลัก) ไม่จำเป็นต้องตั้งชื่อไฟล์ว่า BUILD แต่ตั้งได้ (เช่น BUILD.new-repo-name อาจช่วยให้แยกความแตกต่างจากไฟล์ BUILD จริงของที่เก็บได้) |
build_file_content |
String; ไม่บังคับ
เนื้อหาสำหรับไฟล์ BUILD สำหรับที่เก็บนี้ |
canonical_id |
String; ไม่บังคับ
รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุและไม่ว่างเปล่า Bazel จะไม่นำไฟล์จากแคช เว้นแต่จะมีการเพิ่มไฟล์ลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ได้ระบุหรือว่างเปล่า Bazel จะใช้ URL ของไฟล์เป็นรหัสที่แน่นอนโดยค่าเริ่มต้น ซึ่งจะช่วยตรวจจับข้อผิดพลาดทั่วไปในการอัปเดต URL โดยไม่ อัปเดตแฮชด้วย ทำให้การสร้างสำเร็จในเครื่อง แต่ล้มเหลวใน เครื่องที่ไม่มีไฟล์ในแคช ปิดใช้ลักษณะการทำงานนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 |
commit |
String; ไม่บังคับ
คอมมิตที่เฉพาะเจาะจงที่จะเช็คเอาต์ ต้องระบุสาขา แท็ก หรือคอมมิตอย่างใดอย่างหนึ่งที่แน่นอน |
init_submodules |
บูลีน ไม่บังคับ
ว่าจะโคลนโมดูลย่อยในที่เก็บหรือไม่ |
patch_args |
รายการสตริง ไม่บังคับ
อาร์กิวเมนต์ที่ส่งไปยังเครื่องมือแพตช์ ค่าเริ่มต้นคือ -p0 (ดูแอตทริบิวต์ `patch_strip`) แต่โดยปกติแล้วจะต้องใช้ -p1 สำหรับแพตช์ที่สร้างโดย Git หากระบุอาร์กิวเมนต์ -p หลายรายการ อาร์กิวเมนต์สุดท้ายจะมีผล หากระบุอาร์กิวเมนต์อื่นที่ไม่ใช่ -p Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่ง patch แทนการติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel เมื่อเปลี่ยนไปใช้เครื่องมือบรรทัดคำสั่ง patch และไม่ได้ระบุแอตทริบิวต์ patch_tool ระบบจะใช้ `patch` |
patch_cmds |
รายการสตริง ไม่บังคับ
ลำดับคำสั่ง Bash ที่จะใช้ใน Linux/Macos หลังจากใช้แพตช์แล้ว |
patch_cmds_win |
รายการสตริง ไม่บังคับ
ลำดับคำสั่ง PowerShell ที่จะใช้ใน Windows หลังจากใช้แพตช์ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้ patch_cmds ใน Windows ซึ่งต้องมีไบนารี Bash |
patch_strip |
จำนวนเต็ม ไม่บังคับ
เมื่อตั้งค่าเป็น `N` จะเทียบเท่ากับการแทรก `-pN` ที่จุดเริ่มต้นของ `patch_args` |
patch_tool |
String; ไม่บังคับ
ยูทิลิตี patch(1) ที่จะใช้ หากมีการระบุ Bazel จะใช้เครื่องมือแก้ไขที่ระบุแทนการติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel |
patches |
รายการป้ายกำกับ (ไม่บังคับ)
รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น ระบบจะใช้การติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel ซึ่งไม่รองรับการจับคู่แบบคลุมเครือและแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่ง patch หากมีการระบุแอตทริบิวต์ `patch_tool` หรือมีอาร์กิวเมนต์อื่นนอกเหนือจาก `-p` ในแอตทริบิวต์ `patch_args` |
recursive_init_submodules |
บูลีน ไม่บังคับ
ว่าจะโคลนโมดูลย่อยแบบเรียกซ้ำในที่เก็บหรือไม่ |
remote |
สตริง; ต้องระบุ
URI ของที่เก็บ Git ระยะไกล |
remote_module_file_integrity |
String; ไม่บังคับ
ใช้ภายในเท่านั้น |
remote_module_file_urls |
รายการสตริง ไม่บังคับ
ใช้ภายในเท่านั้น |
remote_patch_strip |
จำนวนเต็ม ไม่บังคับ
จำนวนเครื่องหมายทับนำหน้าที่จะนำออกจากชื่อไฟล์ในแพตช์ระยะไกล |
remote_patches |
พจนานุกรม: สตริง -> สตริง; ไม่บังคับ
แผนที่ของ URL ไฟล์แพตช์ไปยังค่าความสมบูรณ์ของไฟล์นั้น โดยจะใช้หลังจากโคลนที่เก็บและก่อนใช้ไฟล์แพตช์จากแอตทริบิวต์ `patches` โดยจะใช้การติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel คุณระบุหมายเลขการลบแพตช์ได้ด้วย `remote_patch_strip` |
shallow_since |
String; ไม่บังคับ
วันที่ที่ไม่บังคับ โดยต้องไม่ใช่วันที่หลังจากคอมมิตที่ระบุ ไม่อนุญาตให้ใช้อาร์กิวเมนต์หากมีการระบุแท็กหรือกิ่ง (ซึ่งโคลนได้เสมอด้วย --depth=1) การตั้งค่าวันที่ดังกล่าวให้ใกล้กับคอมมิตที่ระบุอาจอนุญาตให้โคลนแบบตื้นของที่เก็บได้แม้ว่าเซิร์ฟเวอร์จะไม่รองรับการดึงข้อมูลแบบตื้นของคอมมิตที่กำหนดเองก็ตาม เนื่องจากมีข้อบกพร่องในการติดตั้งใช้งาน --shallow-since ของ Git เราจึงไม่แนะนำให้ใช้แอตทริบิวต์นี้เนื่องจากอาจทำให้การดึงข้อมูลล้มเหลว |
sparse_checkout_file |
ป้ายกำกับ (ไม่บังคับ)
ไฟล์ที่มีรูปแบบสไตล์ .gitignore สำหรับการชำระเงินแบบ Sparse ของไฟล์ในที่เก็บนี้ คุณระบุ `sparse_checkout_patterns` หรือ `sparse_checkout_file` อย่างใดอย่างหนึ่ง หรือไม่ระบุทั้ง 2 อย่างก็ได้ แต่จะระบุทั้ง 2 อย่างไม่ได้ |
sparse_checkout_patterns |
รายการสตริง ไม่บังคับ
ลำดับของรูปแบบสำหรับการชำระเงินแบบกระจายของไฟล์ในที่เก็บนี้ |
strip_prefix |
String; ไม่บังคับ
คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยก |
tag |
String; ไม่บังคับ
ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุสาขา แท็ก หรือคอมมิตอย่างใดอย่างหนึ่งที่แน่นอน |
verbose |
บูลีน ไม่บังคับ |
workspace_file |
ป้ายกำกับ (ไม่บังคับ)
แอตทริบิวต์ที่ไม่มีการดำเนินการใดๆ ห้ามใช้ |
workspace_file_content |
String; ไม่บังคับ
แอตทริบิวต์ที่ไม่มีการดำเนินการใดๆ ห้ามใช้ |
ตัวแปรสภาพแวดล้อม
กฎของที่เก็บนี้ขึ้นอยู่กับตัวแปรสภาพแวดล้อมต่อไปนี้
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID
new_git_repository
load("@bazel//tools/build_defs/repo:git.bzl", "new_git_repository")
new_git_repository(name, branch, build_file, build_file_content, canonical_id, commit,
init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_strip, patch_tool,
patches, recursive_init_submodules, remote, remote_module_file_integrity,
remote_module_file_urls, remote_patch_strip, remote_patches, shallow_since,
sparse_checkout_file, sparse_checkout_patterns, strip_prefix, tag, verbose,
workspace_file, workspace_file_content)
โคลนที่เก็บ Git ภายนอก
โคลนที่เก็บ Git ตรวจสอบสาขา แท็ก หรือคอมมิตที่ระบุ และ ทำให้เป้าหมายพร้อมสำหรับการเชื่อมโยง หากไม่ได้ระบุสาขา แท็ก หรือคอมมิต ให้ตรวจสอบสาขาเริ่มต้นของที่เก็บ นอกจากนี้ ให้ระบุรหัส และวันที่ของคอมมิตที่เช็คเอาต์ และส่งคืนพจนานุกรมที่มี พารามิเตอร์ที่ระบุเวอร์ชันที่ทำซ้ำได้ของกฎนี้ (ซึ่งแท็กหรือ สาขาอาจไม่ใช่)
Bazel จะพยายามดึงข้อมูลแบบตื้นของเฉพาะคอมมิตที่ระบุก่อน หากไม่สำเร็จ (มักเกิดจากการที่เซิร์ฟเวอร์ไม่รองรับ) ระบบจะกลับไปใช้ การดึงข้อมูลที่สมบูรณ์ของที่เก็บ
ต้องการ http_archive มากกว่า git_repository
สาเหตุมีดังนี้
- กฎของที่เก็บ Git ขึ้นอยู่กับระบบ
git(1)ในขณะที่ตัวดาวน์โหลด HTTP สร้างขึ้นใน Bazel และไม่มีการขึ้นต่อกันของระบบ http_archiveรองรับรายการurlsเป็นมิเรอร์ และgit_repositoryรองรับเฉพาะremoteเดียวhttp_archiveใช้ได้กับแคชที่เก็บ แต่ใช้ไม่ได้กับgit_repositoryดูข้อมูลเพิ่มเติมได้ที่ #5116
แอตทริบิวต์
name |
ชื่อ (ต้องระบุ)
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
branch |
String; ไม่บังคับ
Branch ในที่เก็บระยะไกลที่จะเช็คเอาต์ ต้องระบุสาขา แท็ก หรือคอมมิตอย่างใดอย่างหนึ่งที่แน่นอน |
build_file |
ป้ายกำกับ (ไม่บังคับ)
ไฟล์ที่จะใช้เป็นไฟล์ BUILD สำหรับที่เก็บนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สำหรับที่เก็บหลัก) ไม่จำเป็นต้องตั้งชื่อไฟล์ว่า BUILD แต่ตั้งได้ (เช่น BUILD.new-repo-name อาจช่วยให้แยกความแตกต่างจากไฟล์ BUILD จริงของที่เก็บได้) |
build_file_content |
String; ไม่บังคับ
เนื้อหาสำหรับไฟล์ BUILD สำหรับที่เก็บนี้ |
canonical_id |
String; ไม่บังคับ
รหัส Canonical ของไฟล์ที่ดาวน์โหลด หากระบุและไม่ว่างเปล่า Bazel จะไม่นำไฟล์จากแคช เว้นแต่จะมีการเพิ่มไฟล์ลงในแคชโดยคำขอที่มีรหัส Canonical เดียวกัน หากไม่ได้ระบุหรือว่างเปล่า Bazel จะใช้ URL ของไฟล์เป็นรหัสที่แน่นอนโดยค่าเริ่มต้น ซึ่งจะช่วยตรวจจับข้อผิดพลาดทั่วไปในการอัปเดต URL โดยไม่ อัปเดตแฮชด้วย ทำให้การสร้างสำเร็จในเครื่อง แต่ล้มเหลวใน เครื่องที่ไม่มีไฟล์ในแคช ปิดใช้ลักษณะการทำงานนี้ได้ด้วย --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 |
commit |
String; ไม่บังคับ
คอมมิตที่เฉพาะเจาะจงที่จะเช็คเอาต์ ต้องระบุสาขา แท็ก หรือคอมมิตอย่างใดอย่างหนึ่งที่แน่นอน |
init_submodules |
บูลีน ไม่บังคับ
ว่าจะโคลนโมดูลย่อยในที่เก็บหรือไม่ |
patch_args |
รายการสตริง ไม่บังคับ
อาร์กิวเมนต์ที่ส่งไปยังเครื่องมือแพตช์ ค่าเริ่มต้นคือ -p0 (ดูแอตทริบิวต์ `patch_strip`) แต่โดยปกติแล้วจะต้องใช้ -p1 สำหรับแพตช์ที่สร้างโดย Git หากระบุอาร์กิวเมนต์ -p หลายรายการ อาร์กิวเมนต์สุดท้ายจะมีผล หากระบุอาร์กิวเมนต์อื่นที่ไม่ใช่ -p Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่ง patch แทนการติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel เมื่อเปลี่ยนไปใช้เครื่องมือบรรทัดคำสั่ง patch และไม่ได้ระบุแอตทริบิวต์ patch_tool ระบบจะใช้ `patch` |
patch_cmds |
รายการสตริง ไม่บังคับ
ลำดับคำสั่ง Bash ที่จะใช้ใน Linux/Macos หลังจากใช้แพตช์แล้ว |
patch_cmds_win |
รายการสตริง ไม่บังคับ
ลำดับคำสั่ง PowerShell ที่จะใช้ใน Windows หลังจากใช้แพตช์ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้ patch_cmds ใน Windows ซึ่งต้องมีไบนารี Bash |
patch_strip |
จำนวนเต็ม ไม่บังคับ
เมื่อตั้งค่าเป็น `N` จะเทียบเท่ากับการแทรก `-pN` ที่จุดเริ่มต้นของ `patch_args` |
patch_tool |
String; ไม่บังคับ
ยูทิลิตี patch(1) ที่จะใช้ หากมีการระบุ Bazel จะใช้เครื่องมือแก้ไขที่ระบุแทนการติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel |
patches |
รายการป้ายกำกับ (ไม่บังคับ)
รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น ระบบจะใช้การติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel ซึ่งไม่รองรับการจับคู่แบบคลุมเครือและแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่ง patch หากมีการระบุแอตทริบิวต์ `patch_tool` หรือมีอาร์กิวเมนต์อื่นนอกเหนือจาก `-p` ในแอตทริบิวต์ `patch_args` |
recursive_init_submodules |
บูลีน ไม่บังคับ
ว่าจะโคลนโมดูลย่อยแบบเรียกซ้ำในที่เก็บหรือไม่ |
remote |
สตริง; ต้องระบุ
URI ของที่เก็บ Git ระยะไกล |
remote_module_file_integrity |
String; ไม่บังคับ
ใช้ภายในเท่านั้น |
remote_module_file_urls |
รายการสตริง ไม่บังคับ
ใช้ภายในเท่านั้น |
remote_patch_strip |
จำนวนเต็ม ไม่บังคับ
จำนวนเครื่องหมายทับนำหน้าที่จะนำออกจากชื่อไฟล์ในแพตช์ระยะไกล |
remote_patches |
พจนานุกรม: สตริง -> สตริง; ไม่บังคับ
แผนที่ของ URL ไฟล์แพตช์ไปยังค่าความสมบูรณ์ของไฟล์นั้น โดยจะใช้หลังจากโคลนที่เก็บและก่อนใช้ไฟล์แพตช์จากแอตทริบิวต์ `patches` โดยจะใช้การติดตั้งใช้งานแพตช์ดั้งเดิมของ Bazel คุณระบุหมายเลขการลบแพตช์ได้ด้วย `remote_patch_strip` |
shallow_since |
String; ไม่บังคับ
วันที่ที่ไม่บังคับ โดยต้องไม่ใช่วันที่หลังจากคอมมิตที่ระบุ ไม่อนุญาตให้ใช้อาร์กิวเมนต์หากมีการระบุแท็กหรือกิ่ง (ซึ่งโคลนได้เสมอด้วย --depth=1) การตั้งค่าวันที่ดังกล่าวให้ใกล้กับคอมมิตที่ระบุอาจอนุญาตให้โคลนแบบตื้นของที่เก็บได้แม้ว่าเซิร์ฟเวอร์จะไม่รองรับการดึงข้อมูลแบบตื้นของคอมมิตที่กำหนดเองก็ตาม เนื่องจากมีข้อบกพร่องในการติดตั้งใช้งาน --shallow-since ของ Git เราจึงไม่แนะนำให้ใช้แอตทริบิวต์นี้เนื่องจากอาจทำให้การดึงข้อมูลล้มเหลว |
sparse_checkout_file |
ป้ายกำกับ (ไม่บังคับ)
ไฟล์ที่มีรูปแบบสไตล์ .gitignore สำหรับการชำระเงินแบบ Sparse ของไฟล์ในที่เก็บนี้ คุณระบุ `sparse_checkout_patterns` หรือ `sparse_checkout_file` อย่างใดอย่างหนึ่ง หรือไม่ระบุทั้ง 2 อย่างก็ได้ แต่จะระบุทั้ง 2 อย่างไม่ได้ |
sparse_checkout_patterns |
รายการสตริง ไม่บังคับ
ลำดับของรูปแบบสำหรับการชำระเงินแบบกระจายของไฟล์ในที่เก็บนี้ |
strip_prefix |
String; ไม่บังคับ
คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยก |
tag |
String; ไม่บังคับ
ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุสาขา แท็ก หรือคอมมิตอย่างใดอย่างหนึ่งที่แน่นอน |
verbose |
บูลีน ไม่บังคับ |
workspace_file |
ป้ายกำกับ (ไม่บังคับ)
แอตทริบิวต์ที่ไม่มีการดำเนินการใดๆ ห้ามใช้ |
workspace_file_content |
String; ไม่บังคับ
แอตทริบิวต์ที่ไม่มีการดำเนินการใดๆ ห้ามใช้ |
ตัวแปรสภาพแวดล้อม
กฎของที่เก็บนี้ขึ้นอยู่กับตัวแปรสภาพแวดล้อมต่อไปนี้
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID