ฟังก์ชันต่อไปนี้โหลดได้จาก @bazel_tools//tools/build_defs/repo:git.bzl
กฎสำหรับการโคลนที่เก็บ Git ภายนอก
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, ตรวจสอบแท็กที่ระบุ หรือคอมมิต และทำให้เป้าหมายสำหรับการเชื่อมโยง โดยให้กำหนดรหัสของคอมมิตที่ชำระเงินแล้วและวันที่ของคอมมิตจริง แล้วแสดงผลคำสั่งที่มีพารามิเตอร์ที่ระบุเวอร์ชันที่ทำให้เกิดกฎอีกครั้ง (ซึ่งไม่จำเป็นต้องเป็นแท็ก)
ก่อนอื่น Bazel จะพยายามดึงข้อมูลแบบตื้นๆ สำหรับคอมมิตที่ระบุเท่านั้น หากไม่สำเร็จ (มักเกิดจากไม่มีการรองรับเซิร์ฟเวอร์) ระบบจะกลับไปใช้การดึงข้อมูลที่เก็บอย่างเต็มรูปแบบ
แนะนำ http_archive
ให้กับ git_repository
เหตุผลมีดังนี้
- กฎที่เก็บ Git ขึ้นอยู่กับ
git(1)
ของระบบ ขณะที่เครื่องมือดาวน์โหลด HTTP จะสร้างขึ้นใน Bazel และไม่มีทรัพยากร Dependency ของระบบ http_archive
รองรับรายการurls
เป็นมิเรอร์ และgit_repository
รองรับremote
เพียงรายการเดียวเท่านั้นhttp_archive
ใช้งานได้กับแคชของที่เก็บ แต่ใช้ไม่ได้กับgit_repository
ดู #5116 สำหรับข้อมูลเพิ่มเติม
Attributes
name |
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 เนทีฟ เมื่อกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์และไม่ได้ระบุแอตทริบิวต์ Pat_tool จะมีการใช้ "patch" |
patch_cmds |
รายการสตริง (ไม่บังคับ)
ลำดับคำสั่ง Bash ที่จะนำไปใช้กับ Linux/Macos หลังการใช้แพตช์ |
patch_cmds_win |
รายการสตริง (ไม่บังคับ)
ลำดับคำสั่ง Powershell ที่จะใช้กับ Windows หลังจากนำแพตช์ไปใช้ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้แพตช์_cmds ใน Windows ซึ่งต้องใช้ไบนารี Bash อยู่ |
patch_tool |
สตริง (ไม่บังคับ)
โปรแกรมแพตช์(1) ที่จะใช้ หากมีการระบุไว้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการติดตั้งใช้งานแพตช์แบบเนทีฟของ Bazel |
patches |
รายการป้ายกำกับ ไม่บังคับ
รายชื่อไฟล์ที่จะนำไปใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น จะใช้การใช้งานแพตช์แบบเนทีฟของ Bazel ซึ่งไม่รองรับการจับคู่ Fuzz และแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์หากมีการระบุแอตทริบิวต์ "patch_tool" ไว้หรือมีอาร์กิวเมนต์อื่นที่ไม่ใช่ "-p" ในแอตทริบิวต์ "patch_args" |
recursive_init_submodules |
บูลีน ไม่บังคับ
กำหนดว่าจะโคลนโมดูลย่อยซ้ำในที่เก็บไหม |
remote |
ต้องระบุสตริง
URI ของที่เก็บ Git ระยะไกล |
repo_mapping |
พจนานุกรม: สตริง -> สตริง ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องไปจนถึงชื่อที่เก็บส่วนกลาง การดำเนินการนี้จะช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของพื้นที่ทำงานได้สำหรับทรัพยากร Dependency ของที่เก็บนี้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่าที่เก็บนี้อ้างอิง "@foo" ทุกครั้งที่ที่เก็บ (เช่น การขึ้นต่อกันของ "@foo//some:target" ควรจะแก้ไขการพึ่งพากันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target") |
shallow_since |
สตริง (ไม่บังคับ)
วันที่ซึ่งไม่บังคับ ไม่ใช่หลังจากคอมมิตที่ระบุ ไม่อนุญาตให้ใช้อาร์กิวเมนต์หากระบุแท็กหรือสาขา (ซึ่งสามารถโคลนด้วย --deeplink=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
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, ตรวจสอบแท็กที่ระบุ หรือคอมมิต และทำให้เป้าหมายสำหรับการเชื่อมโยง โดยให้กำหนดรหัสของคอมมิตที่ชำระเงินแล้วและวันที่ของคอมมิตจริง แล้วแสดงผลคำสั่งที่มีพารามิเตอร์ที่ระบุเวอร์ชันที่ทำให้เกิดกฎอีกครั้ง (ซึ่งไม่จำเป็นต้องเป็นแท็ก)
ก่อนอื่น Bazel จะพยายามดึงข้อมูลแบบตื้นๆ สำหรับคอมมิตที่ระบุเท่านั้น หากไม่สำเร็จ (มักเกิดจากไม่มีการรองรับเซิร์ฟเวอร์) ระบบจะกลับไปใช้การดึงข้อมูลที่เก็บอย่างเต็มรูปแบบ
แนะนำ http_archive
ให้กับ git_repository
เหตุผลมีดังนี้
- กฎที่เก็บ Git ขึ้นอยู่กับ
git(1)
ของระบบ ขณะที่เครื่องมือดาวน์โหลด HTTP จะสร้างขึ้นใน Bazel และไม่มีทรัพยากร Dependency ของระบบ http_archive
รองรับรายการurls
เป็นมิเรอร์ และgit_repository
รองรับremote
เพียงรายการเดียวเท่านั้นhttp_archive
ใช้งานได้กับแคชของที่เก็บ แต่ใช้ไม่ได้กับgit_repository
ดู #5116 สำหรับข้อมูลเพิ่มเติม
Attributes
name |
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 เนทีฟ เมื่อกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์และไม่ได้ระบุแอตทริบิวต์ Pat_tool จะมีการใช้ "patch" |
patch_cmds |
รายการสตริง (ไม่บังคับ)
ลำดับคำสั่ง Bash ที่จะนำไปใช้กับ Linux/Macos หลังการใช้แพตช์ |
patch_cmds_win |
รายการสตริง (ไม่บังคับ)
ลำดับคำสั่ง Powershell ที่จะใช้กับ Windows หลังจากนำแพตช์ไปใช้ หากไม่ได้ตั้งค่าแอตทริบิวต์นี้ ระบบจะเรียกใช้แพตช์_cmds ใน Windows ซึ่งต้องใช้ไบนารี Bash อยู่ |
patch_tool |
สตริง (ไม่บังคับ)
โปรแกรมแพตช์(1) ที่จะใช้ หากมีการระบุไว้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการติดตั้งใช้งานแพตช์แบบเนทีฟของ Bazel |
patches |
รายการป้ายกำกับ ไม่บังคับ
รายชื่อไฟล์ที่จะนำไปใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น จะใช้การใช้งานแพตช์แบบเนทีฟของ Bazel ซึ่งไม่รองรับการจับคู่ Fuzz และแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์หากมีการระบุแอตทริบิวต์ "patch_tool" ไว้หรือมีอาร์กิวเมนต์อื่นที่ไม่ใช่ "-p" ในแอตทริบิวต์ "patch_args" |
recursive_init_submodules |
บูลีน ไม่บังคับ
กำหนดว่าจะโคลนโมดูลย่อยซ้ำในที่เก็บไหม |
remote |
ต้องระบุสตริง
URI ของที่เก็บ Git ระยะไกล |
repo_mapping |
พจนานุกรม: สตริง -> สตริง ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องไปจนถึงชื่อที่เก็บส่วนกลาง การดำเนินการนี้จะช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของพื้นที่ทำงานได้สำหรับทรัพยากร Dependency ของที่เก็บนี้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่าที่เก็บนี้อ้างอิง "@foo" ทุกครั้งที่ที่เก็บ (เช่น การขึ้นต่อกันของ "@foo//some:target" ควรจะแก้ไขการพึ่งพากันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target") |
shallow_since |
สตริง (ไม่บังคับ)
วันที่ซึ่งไม่บังคับ ไม่ใช่หลังจากคอมมิตที่ระบุ ไม่อนุญาตให้ใช้อาร์กิวเมนต์หากระบุแท็กหรือสาขา (ซึ่งสามารถโคลนด้วย --deeplink=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 อย่างไม่ได้ |