กฎที่เก็บ 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, ตรวจสอบแท็กหรือคอมมิตที่ระบุ และทำให้เป้าหมายพร้อมใช้งานสำหรับการเชื่อมโยง นอกจากนี้ ให้กำหนดรหัสของคอมมิตที่เช็คเอาต์และวันที่ของคอมมิต แล้วแสดงผล dict ที่มีพารามิเตอร์ที่ระบุเวอร์ชันที่ทำซ้ำของกฎนี้ (ซึ่งไม่จำเป็นต้องเป็นแท็ก)

ก่อนอื่น Bazel จะพยายามดึงข้อมูลแบบไม่เจาะลึกเฉพาะคอมมิตที่ระบุ หากไม่สำเร็จ (มักเกิดจากไม่มีการสนับสนุนเซิร์ฟเวอร์) ระบบจะกลับไปใช้การดึงข้อมูลรีโพซิทอรีทั้งหมด

ต้องการ http_archive มากกว่า git_repository เหตุผลมีดังนี้

  • กฎที่เก็บ Git ขึ้นอยู่กับgit(1)ระบบ ส่วนโปรแกรมดาวน์โหลด HTTP จะฝังอยู่ใน Bazel และไม่ขึ้นอยู่กับระบบ
  • http_archive รองรับรายการ urls เป็นมิเรอร์ และ git_repository รองรับเพียง remote รายการเดียว
  • http_archive ใช้ได้กับแคชที่เก็บ แต่ไม่ใช้ได้กับ git_repository ดูข้อมูลเพิ่มเติมได้ที่ #5116

แอตทริบิวต์

name ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้

branch สตริง ไม่บังคับ

ในที่เก็บระยะไกลเพื่อตรวจสอบ ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ

build_file ป้ายกํากับ (ไม่บังคับ)

ไฟล์ที่จะใช้เป็นไฟล์ BUILD สําหรับที่เก็บข้อมูลนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สําหรับที่เก็บข้อมูลหลัก) ไฟล์ไม่จำเป็นต้องมีชื่อว่า BUILD แต่อาจเป็นชื่ออื่นก็ได้ (เช่น BUILD.new-repo-name อาจเป็นชื่อที่เหมาะในการแยกความแตกต่างจากไฟล์ BUILD จริงของที่เก็บ

build_file_content สตริง ไม่บังคับ

เนื้อหาสำหรับไฟล์ BUILD ของที่เก็บนี้

commit สตริง ไม่บังคับ

ตรวจสอบคอมมิตที่เฉพาะเจาะจง ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ

init_submodules บูลีน ไม่บังคับ

โคลนโมดูลย่อยในที่เก็บหรือไม่

patch_args รายการสตริง (ไม่บังคับ)

อาร์กิวเมนต์ที่ส่งไปยังเครื่องมือแพตช์ ค่าเริ่มต้นคือ -p0 แต่โดยปกติแล้วคุณจะต้องใส่ -p1 สำหรับแพตช์ที่ git สร้างขึ้น หากระบุอาร์กิวเมนต์ -p หลายรายการ อาร์กิวเมนต์สุดท้ายจะมีผล หากระบุอาร์กิวเมนต์อื่นที่ไม่ใช่ -p ไว้ Bazel จะเปลี่ยนไปใช้เครื่องมือบรรทัดคำสั่งการปะติดปะต่อแทนการใช้การปะติดปะต่อแบบดั้งเดิมของ Bazel เมื่อกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์และไม่ได้ระบุแอตทริบิวต์ Patch_tool ระบบจะใช้ "patch"

patch_cmds รายการสตริง (ไม่บังคับ)

ลำดับคำสั่ง Bash ที่จะใช้ใน Linux/Macos หลังจากติดตั้งแพตช์แล้ว

patch_cmds_win รายการสตริง (ไม่บังคับ)

ลำดับคำสั่ง PowerShell ที่จะใช้ใน Windows หลังจากติดตั้งแพตช์แล้ว หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้ patch_cmds ใน Windows ซึ่งต้องมีไฟล์ Bash อยู่

patch_tool สตริง ไม่บังคับ

ยูทิลิตีการแก้ไข(1) ที่จะใช้ หากระบุค่านี้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการใช้แพตช์แบบเนทีฟของ Bazel

patches รายการป้ายกำกับ (ไม่บังคับ)

รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์เก็บถาวร โดยค่าเริ่มต้นจะใช้การติดตั้งใช้งานการปะติดปะต่อแบบดั้งเดิมของ Bazel ซึ่งไม่รองรับการจับคู่แบบไม่เจาะจงและแพตช์แบบไบนารี แต่ Bazel จะเปลี่ยนไปใช้เครื่องมือบรรทัดคำสั่งการปะติดปะต่อหากระบุแอตทริบิวต์ `patch_tool` หรือมีอาร์กิวเมนต์อื่นนอกเหนือจาก `-p` ในแอตทริบิวต์ `patch_args`

recursive_init_submodules บูลีน ไม่บังคับ

ต้องการโคลนโมดูลย่อยแบบซ้ำที่เก็บหรือไม่

remote สตริง ต้องระบุ

URI ของที่เก็บ Git ระยะไกล

repo_mapping Dictionary: String -> String ไม่บังคับ

ในบริบท `WORKSPACE` เท่านั้น: พจนานุกรมจากชื่อที่เก็บข้อมูลในเครื่องไปยังชื่อที่เก็บข้อมูลส่วนกลาง การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้ เช่น รายการ "@foo": "@bar"` จะประกาศว่าทุกครั้งที่ที่เก็บนี้ขึ้นอยู่กับ "@foo" (เช่น ทรัพยากร Dependency ของ "@foo//some:target" ควรแก้ไขการพึ่งพาดังกล่าวใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target" ทุกครั้ง แอตทริบิวต์นี้รองรับส่วนขยาย "MODULE.baze" ในฟังก์ชัน "MODULE.baze)

shallow_since สตริง ไม่บังคับ

วันที่ที่ไม่บังคับ ซึ่งต้องอยู่ก่อนการคอมมิตที่ระบุ ระบบไม่อนุญาตให้ใช้อาร์กิวเมนต์นี้หากมีการระบุแท็กหรือสาขา (ซึ่งสามารถโคลนได้เสมอด้วย --depth=1) การตั้งค่าวันที่ดังกล่าวใกล้กับคอมมิตที่ระบุอาจอนุญาตให้มีการโคลนเวอร์ชันตื้นของที่เก็บ แม้ว่าเซิร์ฟเวอร์จะไม่รองรับการดึงข้อมูลการคอมมิตที่กำหนดเองก็ตาม เราไม่แนะนำให้ใช้แอตทริบิวต์นี้เนื่องจากอาจทำให้การดึงข้อมูลไม่สำเร็จเนื่องจากข้อบกพร่องในการใช้งาน --shallow-since ของ git

strip_prefix สตริง ไม่บังคับ

คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก

tag สตริง ไม่บังคับ

แท็กในที่เก็บระยะไกลเป็น "ตรวจสอบแล้ว" ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ

verbose บูลีน ไม่บังคับ
workspace_file ป้ายกำกับ ไม่บังคับ

ไฟล์ที่จะใช้เป็นไฟล์ "WORKSPACE" สำหรับที่เก็บนี้ ต้องระบุ "workspace_file" หรือ "workspace_file_content" หรือจะระบุทั้ง 2 รายการไม่ได้

workspace_file_content สตริง ไม่บังคับ

เนื้อหาของไฟล์ WORKSPACE สำหรับที่เก็บนี้ ต้องระบุ "workspace_file" หรือ "workspace_file_content" หรือจะระบุทั้ง 2 รายการไม่ได้

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, ตรวจสอบแท็กหรือคอมมิตที่ระบุ และทำให้เป้าหมายพร้อมใช้งานสำหรับการเชื่อมโยง นอกจากนี้ ให้กำหนดรหัสของคอมมิตที่เช็คเอาต์และวันที่ของคอมมิต แล้วแสดงผล dict ที่มีพารามิเตอร์ที่ระบุเวอร์ชันที่ทำซ้ำของกฎนี้ (ซึ่งไม่จำเป็นต้องเป็นแท็ก)

ก่อนอื่น Bazel จะพยายามดึงข้อมูลแบบไม่เจาะลึกเฉพาะคอมมิตที่ระบุ หากไม่สำเร็จ (มักเกิดจากไม่มีการสนับสนุนเซิร์ฟเวอร์) ระบบจะกลับไปใช้การดึงข้อมูลรีโพซิทอรีทั้งหมด

ต้องการ http_archive มากกว่า git_repository เหตุผลมีดังนี้

  • กฎที่เก็บ Git ขึ้นอยู่กับgit(1)ระบบ ส่วนโปรแกรมดาวน์โหลด HTTP จะฝังอยู่ใน Bazel และไม่ขึ้นอยู่กับระบบ
  • http_archive รองรับรายการ urls เป็นมิเรอร์ และ git_repository รองรับเพียง remote รายการเดียว
  • http_archive ใช้งานได้กับแคชที่เก็บ แต่ใช้ไม่ได้กับ git_repository ดูข้อมูลเพิ่มเติมที่ #5116

แอตทริบิวต์

name ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้

branch สตริง ไม่บังคับ

ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ

build_file ป้ายกํากับ (ไม่บังคับ)

ไฟล์ที่จะใช้เป็นไฟล์ BUILD สําหรับที่เก็บข้อมูลนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สําหรับที่เก็บข้อมูลหลัก) ไฟล์ไม่จำเป็นต้องมีชื่อว่า BUILD แต่อาจเป็นชื่ออื่นก็ได้ (เช่น BUILD.new-repo-name อาจเป็นชื่อที่เหมาะในการแยกความแตกต่างจากไฟล์ BUILD จริงของที่เก็บ

build_file_content สตริง ไม่บังคับ

เนื้อหาสำหรับไฟล์ BUILD ของที่เก็บนี้

commit สตริง ไม่บังคับ

ตรวจสอบคอมมิตที่เฉพาะเจาะจง ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ

init_submodules บูลีน ไม่บังคับ

โคลนโมดูลย่อยในที่เก็บหรือไม่

patch_args รายการสตริง (ไม่บังคับ)

อาร์กิวเมนต์ที่ส่งไปยังเครื่องมือแพตช์ ค่าเริ่มต้นคือ -p0 แต่โดยปกติแล้วคุณจะต้องใส่ -p1 สำหรับแพตช์ที่ git สร้างขึ้น หากระบุอาร์กิวเมนต์ -p หลายรายการ อาร์กิวเมนต์สุดท้ายจะมีผล หากระบุอาร์กิวเมนต์อื่นที่ไม่ใช่ -p ไว้ Bazel จะเปลี่ยนไปใช้เครื่องมือบรรทัดคำสั่งการปะติดปะต่อแทนการใช้การปะติดปะต่อแบบดั้งเดิมของ Bazel เมื่อกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์และไม่ได้ระบุแอตทริบิวต์ Patch_tool ระบบจะใช้ "patch"

patch_cmds รายการสตริง (ไม่บังคับ)

ลำดับคำสั่ง Bash ที่จะใช้ใน Linux/Macos หลังจากติดตั้งแพตช์แล้ว

patch_cmds_win รายการสตริง (ไม่บังคับ)

ลำดับคำสั่ง PowerShell ที่จะใช้ใน Windows หลังจากติดตั้งแพตช์แล้ว หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้ patch_cmds ใน Windows ซึ่งต้องมีไฟล์ Bash อยู่

patch_tool สตริง ไม่บังคับ

ยูทิลิตีการแก้ไข(1) ที่จะใช้ หากระบุค่านี้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการใช้แพตช์แบบเนทีฟของ Bazel

patches รายการป้ายกำกับ (ไม่บังคับ)

รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์เก็บถาวร โดยค่าเริ่มต้นจะใช้การติดตั้งใช้งานการปะติดปะต่อแบบดั้งเดิมของ Bazel ซึ่งไม่รองรับการจับคู่แบบไม่เจาะจงและแพตช์แบบไบนารี แต่ Bazel จะเปลี่ยนไปใช้เครื่องมือบรรทัดคำสั่งการปะติดปะต่อหากระบุแอตทริบิวต์ `patch_tool` หรือมีอาร์กิวเมนต์อื่นนอกเหนือจาก `-p` ในแอตทริบิวต์ `patch_args`

recursive_init_submodules บูลีน ไม่บังคับ

ต้องการโคลนโมดูลย่อยแบบซ้ำที่เก็บหรือไม่

remote สตริง ต้องระบุ

URI ของที่เก็บ Git ระยะไกล

repo_mapping พจนานุกรม: สตริง -> สตริง ไม่บังคับ

ในบริบท "WORKSPACE" เท่านั้น: เป็นพจนานุกรมจากชื่อที่เก็บในเครื่องไปจนถึงชื่อที่เก็บร่วม การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้ ตัวอย่างเช่น รายการ `"@foo": "@bar"` ประกาศว่าเมื่อใดก็ตามที่ที่เก็บข้อมูลนี้ใช้@foo (เช่น ใช้@foo//some:target) ระบบควรแก้ไขการอ้างอิงนั้นภายใน@bar ที่ประกาศไว้ทั่วโลก นั่นคือ@bar//some:target) ระบบไม่รองรับแอตทริบิวต์นี้ในบริบท `MODULE.bazel` (เมื่อเรียกใช้กฎที่เก็บข้อมูลภายในฟังก์ชันการใช้งานของส่วนขยายโมดูล)

shallow_since สตริง ไม่บังคับ

วันที่ที่ไม่บังคับ ซึ่งต้องอยู่ก่อนการคอมมิตที่ระบุ ระบบไม่อนุญาตให้ใช้อาร์กิวเมนต์นี้หากมีการระบุแท็กหรือสาขา (ซึ่งสามารถโคลนได้เสมอด้วย --depth=1) การตั้งค่าวันที่ดังกล่าวใกล้กับคอมมิตที่ระบุอาจอนุญาตให้มีการโคลนเวอร์ชันตื้นของที่เก็บ แม้ว่าเซิร์ฟเวอร์จะไม่รองรับการดึงข้อมูลการคอมมิตที่กำหนดเองก็ตาม เราไม่แนะนำให้ใช้แอตทริบิวต์นี้เนื่องจากอาจทำให้การดึงข้อมูลไม่สำเร็จเนื่องจากข้อบกพร่องในการใช้งาน --shallow-since ของ git

strip_prefix สตริง ไม่บังคับ

คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก

tag สตริง ไม่บังคับ

แท็กในที่เก็บระยะไกลเป็น "ตรวจสอบแล้ว" ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ

verbose บูลีน ไม่บังคับ
workspace_file ป้ายกํากับ (ไม่บังคับ)

ไฟล์ที่จะใช้เป็นไฟล์ `WORKSPACE` สําหรับที่เก็บข้อมูลนี้ คุณสามารถระบุ "workspace_file" หรือ "workspace_file_content" อย่างใดอย่างหนึ่ง หรือจะระบุทั้ง 2 อย่างก็ได้

workspace_file_content สตริง ไม่บังคับ

เนื้อหาของไฟล์ WORKSPACE สำหรับที่เก็บนี้ คุณสามารถระบุ "workspace_file" หรือ "workspace_file_content" อย่างใดอย่างหนึ่ง หรือจะระบุทั้ง 2 อย่างก็ได้