ฟังก์ชันต่อไปนี้สามารถโหลดได้จาก
@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, ตรวจสอบแท็กที่ระบุ หรือคอมมิต และ ทำให้เป้าหมายพร้อมสำหรับการเชื่อมโยง นอกจากนี้ ให้ระบุรหัสของ ตรวจสอบวันที่ที่คอมมิตและวันที่ของคอมมิต แล้วแสดงผล dict ที่มีพารามิเตอร์ ที่ระบุกฎในเวอร์ชันที่ทำซ้ำได้ (ซึ่งแท็กอาจไม่ )
ก่อนอื่น Bazel จะพยายามดึงข้อมูลแบบตื้นๆ ของคอมมิตที่ระบุเท่านั้น ถ้าล้มเหลว (มักจะเป็นเพราะไม่มีการสนับสนุนของเซิร์ฟเวอร์) จะกลับไปใช้ ดึงข้อมูลที่เก็บอย่างเต็มรูปแบบ
ให้ใช้ http_archive
เป็น git_repository
เหตุผลมีดังนี้
- กฎที่เก็บ Git ขึ้นอยู่กับ
git(1)
ของระบบในขณะที่เครื่องมือดาวน์โหลด HTTP สร้างขึ้น ลงใน Bazel และไม่มีทรัพยากร Dependency ของระบบ http_archive
รองรับรายการurls
เป็นมิเรอร์ และgit_repository
รองรับเฉพาะรายการremote
รายการเดียวhttp_archive
ใช้งานได้กับแคชที่เก็บ แต่ไม่สามารถใช้ได้กับgit_repository
โปรดดู #5116 เพื่อดูข้อมูลเพิ่มเติม
Attributes
name |
ชื่อ ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
branch |
String; ไม่บังคับ
ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ |
build_file |
ป้ายกำกับ ไม่บังคับ
ไฟล์ที่จะใช้เป็นไฟล์ BUILD สำหรับที่เก็บนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สำหรับที่เก็บหลัก) ไฟล์นี้ไม่จำเป็นต้องตั้งชื่อว่า BUILD แต่สามารถเป็น (ชื่ออย่างเช่น BUILD.new-repo-name อาจเหมาะที่จะแยกออกจากไฟล์ BUILD จริงของที่เก็บ |
build_file_content |
String; ไม่บังคับ
เนื้อหาของไฟล์ BUILD สำหรับที่เก็บนี้ |
commit |
String; ไม่บังคับ
ให้ตรวจสอบ ต้องระบุ 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 |
String; ไม่บังคับ
โปรแกรมแพตช์(1) ที่จะใช้ หากระบุไว้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการติดตั้งใช้งานแพตช์ของ Bazel เนทีฟ |
patches |
รายการป้ายกำกับ ไม่บังคับ
รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น โมเดลจะใช้การติดตั้งแพตช์ของ Bazel ซึ่งไม่รองรับการจับคู่ Fuzz Match และแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์หากมีการระบุแอตทริบิวต์ "patch_tool" หรือมีอาร์กิวเมนต์อื่นที่ไม่ใช่ "-p" ในแอตทริบิวต์ "patch_args" |
recursive_init_submodules |
บูลีน ไม่บังคับ
เลือกว่าจะโคลนโมดูลย่อยซ้ำในที่เก็บหรือไม่ |
remote |
String; ต้องระบุ
URI ของที่เก็บ Git ระยะไกล |
repo_mapping |
พจนานุกรม: สตริง -> String; ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องเป็นชื่อที่เก็บส่วนกลาง การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่า ไม่ว่าเมื่อใดที่เก็บนี้จะขึ้นอยู่กับ "@foo" (เช่น การพึ่งพา "@foo//some:target" ควรแก้ไขการขึ้นต่อกันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target`) |
shallow_since |
String; ไม่บังคับ
วันที่ที่ไม่บังคับ ไม่ใช่หลังวันที่คอมมิตที่ระบุ ไม่อนุญาตอาร์กิวเมนต์หากมีการระบุแท็กหรือสาขา (ซึ่งสามารถโคลนด้วย --depth=1 ได้เสมอ) การตั้งค่าวันที่ดังกล่าวใกล้กับคอมมิตที่ระบุอาจอนุญาตให้มีการโคลนเวอร์ชันตื้นของที่เก็บ แม้ว่าเซิร์ฟเวอร์จะไม่รองรับการดึงข้อมูลการคอมมิตที่กำหนดเองก็ตาม เนื่องจากข้อบกพร่องในการใช้งาน --shallow-since ของ git เราไม่แนะนำให้ใช้แอตทริบิวต์นี้เพราะอาจทำให้ดึงข้อมูลไม่สำเร็จ |
strip_prefix |
String; ไม่บังคับ
คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก |
tag |
String; ไม่บังคับ
ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ |
verbose |
บูลีน ไม่บังคับ |
workspace_file |
ป้ายกำกับ ไม่บังคับ
ไฟล์ที่จะใช้เป็นไฟล์ "WORKSPACE" สำหรับที่เก็บนี้ ต้องระบุ "workspace_file" หรือ "workspace_file_content" หรือจะระบุทั้ง 2 อย่างไม่ได้ |
workspace_file_content |
String; ไม่บังคับ
เนื้อหาของไฟล์ 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, ตรวจสอบแท็กที่ระบุ หรือคอมมิต และ ทำให้เป้าหมายพร้อมสำหรับการเชื่อมโยง นอกจากนี้ ให้ระบุรหัสของ ตรวจสอบวันที่ที่คอมมิตและวันที่ของคอมมิต แล้วแสดงผล dict ที่มีพารามิเตอร์ ที่ระบุกฎในเวอร์ชันที่ทำซ้ำได้ (ซึ่งแท็กอาจไม่ )
ก่อนอื่น Bazel จะพยายามดึงข้อมูลแบบตื้นๆ ของคอมมิตที่ระบุเท่านั้น ถ้าล้มเหลว (มักจะเป็นเพราะไม่มีการสนับสนุนของเซิร์ฟเวอร์) จะกลับไปใช้ ดึงข้อมูลที่เก็บอย่างเต็มรูปแบบ
ให้ใช้ http_archive
เป็น git_repository
เหตุผลมีดังนี้
- กฎที่เก็บ Git ขึ้นอยู่กับ
git(1)
ของระบบในขณะที่เครื่องมือดาวน์โหลด HTTP สร้างขึ้น ลงใน Bazel และไม่มีทรัพยากร Dependency ของระบบ http_archive
รองรับรายการurls
เป็นมิเรอร์ และgit_repository
รองรับเฉพาะรายการremote
รายการเดียวhttp_archive
ใช้งานได้กับแคชที่เก็บ แต่ไม่สามารถใช้ได้กับgit_repository
โปรดดู #5116 เพื่อดูข้อมูลเพิ่มเติม
Attributes
name |
ชื่อ ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับที่เก็บนี้ |
branch |
String; ไม่บังคับ
ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ |
build_file |
ป้ายกำกับ ไม่บังคับ
ไฟล์ที่จะใช้เป็นไฟล์ BUILD สำหรับที่เก็บนี้ แอตทริบิวต์นี้เป็นป้ายกำกับแบบสัมบูรณ์ (ใช้ "@//" สำหรับที่เก็บหลัก) ไฟล์นี้ไม่จำเป็นต้องตั้งชื่อว่า BUILD แต่สามารถเป็น (ชื่ออย่างเช่น BUILD.new-repo-name อาจเหมาะที่จะแยกออกจากไฟล์ BUILD จริงของที่เก็บ |
build_file_content |
String; ไม่บังคับ
เนื้อหาของไฟล์ BUILD สำหรับที่เก็บนี้ |
commit |
String; ไม่บังคับ
ให้ตรวจสอบ ต้องระบุ 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 |
String; ไม่บังคับ
โปรแกรมแพตช์(1) ที่จะใช้ หากระบุไว้ Bazel จะใช้เครื่องมือแพตช์ที่ระบุแทนการติดตั้งใช้งานแพตช์ของ Bazel เนทีฟ |
patches |
รายการป้ายกำกับ ไม่บังคับ
รายการไฟล์ที่จะใช้เป็นแพตช์หลังจากแตกไฟล์ที่เก็บถาวร โดยค่าเริ่มต้น โมเดลจะใช้การติดตั้งแพตช์ของ Bazel ซึ่งไม่รองรับการจับคู่ Fuzz Match และแพตช์ไบนารี แต่ Bazel จะกลับไปใช้เครื่องมือบรรทัดคำสั่งแพตช์หากมีการระบุแอตทริบิวต์ "patch_tool" หรือมีอาร์กิวเมนต์อื่นที่ไม่ใช่ "-p" ในแอตทริบิวต์ "patch_args" |
recursive_init_submodules |
บูลีน ไม่บังคับ
เลือกว่าจะโคลนโมดูลย่อยซ้ำในที่เก็บหรือไม่ |
remote |
String; ต้องระบุ
URI ของที่เก็บ Git ระยะไกล |
repo_mapping |
พจนานุกรม: สตริง -> String; ต้องระบุ
พจนานุกรมจากชื่อที่เก็บในเครื่องเป็นชื่อที่เก็บส่วนกลาง การดำเนินการนี้ช่วยให้ควบคุมความละเอียดของทรัพยากร Dependency ของที่เก็บนี้ได้ เช่น รายการ `"@foo": "@bar"` จะประกาศว่า ไม่ว่าเมื่อใดที่เก็บนี้จะขึ้นอยู่กับ "@foo" (เช่น การพึ่งพา "@foo//some:target" ควรแก้ไขการขึ้นต่อกันภายใน "@bar" ที่ประกาศทั่วโลก ("@bar//some:target`) |
shallow_since |
String; ไม่บังคับ
วันที่ที่ไม่บังคับ ไม่ใช่หลังวันที่คอมมิตที่ระบุ ไม่อนุญาตอาร์กิวเมนต์หากมีการระบุแท็กหรือสาขา (ซึ่งสามารถโคลนด้วย --depth=1 ได้เสมอ) การตั้งค่าวันที่ดังกล่าวใกล้กับคอมมิตที่ระบุอาจอนุญาตให้มีการโคลนเวอร์ชันตื้นของที่เก็บ แม้ว่าเซิร์ฟเวอร์จะไม่รองรับการดึงข้อมูลการคอมมิตที่กำหนดเองก็ตาม เนื่องจากข้อบกพร่องในการใช้งาน --shallow-since ของ git เราไม่แนะนำให้ใช้แอตทริบิวต์นี้เพราะอาจทำให้ดึงข้อมูลไม่สำเร็จ |
strip_prefix |
String; ไม่บังคับ
คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก |
tag |
String; ไม่บังคับ
ในที่เก็บระยะไกลเพื่อเช็คเอาต์ ต้องระบุ Branch, แท็ก หรือคอมมิตอย่างแม่นยำ |
verbose |
บูลีน ไม่บังคับ |
workspace_file |
ป้ายกำกับ ไม่บังคับ
ไฟล์ที่จะใช้เป็นไฟล์ "WORKSPACE" สำหรับที่เก็บนี้ ต้องระบุ "workspace_file" หรือ "workspace_file_content" หรือจะระบุทั้ง 2 อย่างไม่ได้ |
workspace_file_content |
String; ไม่บังคับ
เนื้อหาของไฟล์ WORKSPACE สำหรับที่เก็บนี้ ต้องระบุ "workspace_file" หรือ "workspace_file_content" หรือจะระบุทั้ง 2 อย่างไม่ได้ |