Repo ช่วยเสริม Git โดยทำให้งานในที่เก็บหลายแห่งง่ายขึ้น ดู เครื่องมือในการควบคุมแหล่งที่มา สำหรับคำอธิบายของความสัมพันธ์ระหว่าง Repo และ Git ๆ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Repo ดูที่ Repo README
การใช้ Repo ใช้แบบฟอร์มต่อไปนี้:
repo command options
องค์ประกอบเสริมจะแสดงในวงเล็บ [ ] ยกตัวอย่างเช่นคำสั่งจำนวนมากใช้เวลา project-list เป็นอาร์กิวเมนต์ คุณสามารถระบุ project-list เป็นรายการของชื่อหรือรายการของเส้นทางไปยังไดเรกทอรีแหล่งท้องถิ่นสำหรับโครงการที่:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
ช่วย
หน้านี้เน้นเฉพาะตัวเลือกหลักเท่านั้น ดูวิธีใช้บรรทัดคำสั่งสำหรับรายละเอียดทั้งหมด เมื่อติดตั้ง Repo คุณจะพบเอกสารล่าสุดที่เริ่มต้นด้วยการสรุปคำสั่งทั้งหมดโดยเรียกใช้:
repo help
คุณสามารถดูข้อมูลโดยละเอียดเกี่ยวกับคำสั่งใด ๆ ได้โดยเรียกใช้สิ่งนี้ภายในทรี Repo:
repo help command
ตัวอย่างเช่นคำสั่งดังต่อไปนี้มีผลเป็นรายละเอียดและรายการของตัวเลือกสำหรับ init
ข้อโต้แย้งของคู่ค้าซึ่งเริ่มต้น Repo ในไดเรกทอรีปัจจุบัน (ดู init สำหรับรายละเอียด.)
repo help init
หรือหากต้องการดูเฉพาะรายการตัวเลือกที่มีให้เรียกใช้:
repo command --helpตัวอย่างเช่น:
repo init --help
ในนั้น
repo init -u url [options]
ติดตั้ง Repo ในไดเร็กทอรีปัจจุบัน นี้จะสร้าง .repo/
ไดเรกทอรีกับเก็บ Git สำหรับรหัสที่มา Repo และมาตรฐานไฟล์ประจักษ์ Android
ตัวเลือก:
-
-u
: ระบุ URL ที่จะดึงข้อมูลที่เก็บอย่างชัดแจ้ง ประจักษ์ทั่วไปจะพบได้ที่https://android.googlesource.com/platform/manifest
-
-m
: เลือกไฟล์ Manifest ภายในพื้นที่เก็บข้อมูล ถ้าไม่มีชื่ออย่างชัดแจ้งจะถูกเลือกเริ่มต้นคือdefault.xml
-
-b
: ระบุการแก้ไขที่เป็นเฉพาะ manifest-branch
หมายเหตุ: สำหรับคำสั่งทั้งหมดที่เหลือ Repo, ไดเรกทอรีการทำงานปัจจุบันจะต้องเป็นแม่ของไดเรกทอรี .repo/
หรือไดเรกทอรีย่อยของไดเรกทอรีแม่ที่
ซิงค์
repo sync [project-list]
ดาวน์โหลดเปลี่ยนแปลงใหม่และการปรับปรุงไฟล์ทำงานในสภาพแวดล้อมท้องถิ่นของคุณเป็นหลักบรรลุ git fetch
ในทุกเก็บ Git ถ้าคุณเรียกใช้ repo sync
โดยไม่ขัดแย้งก็ประสานไฟล์สำหรับทุกโครงการ
เมื่อคุณเรียกใช้ repo sync
นี้เป็นสิ่งที่เกิดขึ้น
หากโครงการไม่เคยมีการทำข้อมูลให้ตรงกันแล้ว
repo sync
เทียบเท่ากับgit clone
สาขาทั้งหมดในที่เก็บแบบรีโมตจะถูกคัดลอกไปยังไดเร็กทอรีโปรเจ็กต์โลคัลหากโครงการได้รับการทำข้อมูลให้ตรงกันก่อนแล้ว
repo sync
เทียบเท่ากับ:git remote update git rebase origin/branch
ที่
branch
คือการตรวจสอบออกในขณะนี้สาขาในไดเรกทอรีโครงการท้องถิ่น หากสาขาในพื้นที่ไม่ติดตามสาขาในที่เก็บระยะไกล การซิงโครไนซ์จะไม่เกิดขึ้นสำหรับโปรเจ็กต์ถ้า Git rebase ผลการดำเนินงานความขัดแย้งในการผสานใช้คำสั่ง Git ปกติ (เช่น
git rebase --continue
) ในการแก้ปัญหาความขัดแย้ง
หลังจากที่ประสบความสำเร็จของ repo sync
รหัสในโครงการที่ระบุถึงวันที่และซิงค์กับรหัสในพื้นที่เก็บข้อมูลระยะไกล
นี่คือตัวเลือกที่สำคัญ ดู repo help sync
หาข้อมูลเพิ่มเติม:
-c
: การดึงข้อมูลเฉพาะสาขาที่ประจักษ์ในปัจจุบันจากเซิร์ฟเวอร์-d
: สวิทช์ระบุโครงการกลับไปแก้ไขอย่างชัดแจ้ง สิ่งนี้มีประโยชน์หากปัจจุบันโปรเจ็กต์อยู่ในสาขาของหัวข้อ แต่จำเป็นต้องมีการแก้ไขรายการชั่วคราว-f
: ดำเนินการด้วยซิงค์โครงการอื่น ๆ แม้ว่าโครงการล้มเหลวในการซิงค์-j threadcount
: สปลิตซิงค์ในหัวข้อสำหรับการเสร็จสิ้นได้เร็วขึ้น ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้งานเครื่องมากเกินไป - ปล่อยให้ CPU บางส่วนสงวนไว้สำหรับงานอื่นๆ หากต้องการดูจำนวนซีพียูใช้ได้ระยะแรก:nproc --all
-q
: ทำงานอย่างเงียบ ๆ ด้วยความแค้นข้อความสถานะ-s
: Sync เพื่อที่รู้จักกันดีสร้างตามที่ระบุโดย manifest-server องค์ประกอบในปัจจุบันอย่างชัดแจ้ง
ที่อัพโหลด
repo upload [project-list]
สำหรับโครงการที่ระบุ Repo จะเปรียบเทียบสาขาในพื้นที่กับสาขาระยะไกลที่อัปเดตระหว่างการซิงค์ Repo ครั้งล่าสุด Repo แจ้งให้คุณเลือกสาขาที่ยังไม่ได้อัปโหลดเพื่อตรวจสอบอย่างน้อยหนึ่งสาขา
คอมมิตทั้งหมดในสาขาที่เลือกจะถูกส่งไปยัง Gerrit ผ่านการเชื่อมต่อ HTTPS คุณต้องกำหนดค่ารหัสผ่าน HTTPS เพื่อเปิดใช้งานการอนุญาตการอัปโหลด เยี่ยมชม Generator รหัสผ่าน เพื่อสร้างคู่ username / password ใหม่เพื่อใช้ผ่าน HTTPS
เมื่อ Gerrit ได้รับข้อมูลออบเจ็กต์บนเซิร์ฟเวอร์ มันจะเปลี่ยนการคอมมิตแต่ละรายการให้กลายเป็นการเปลี่ยนแปลงเพื่อให้ผู้ตรวจสอบสามารถแสดงความคิดเห็นเกี่ยวกับคอมมิตเฉพาะได้ ที่จะรวมการกระทำหลายด่านเป็นหนึ่งกระทำใช้ git rebase -i
ก่อนที่คุณเรียกอัปโหลด
ถ้าคุณเรียกใช้ repo upload
โดยไม่ขัดแย้งจะค้นหาทุกโครงการสำหรับการเปลี่ยนแปลงที่จะอัปโหลด
หากต้องการแก้ไขเปลี่ยนแปลงหลังจากที่พวกเขาได้รับการอัปโหลดใช้เครื่องมือเช่น git rebase -i
หรือ git commit --amend
เพื่ออัพเดตกระทำท้องถิ่นของคุณ หลังจากแก้ไขเสร็จแล้ว:
- ตรวจสอบว่าสาขาที่อัปเดตเป็นสาขาที่เช็คเอาท์ในปัจจุบัน
- สำหรับแต่ละคอมมิตในซีรีส์ ให้ป้อน Gerrit change ID ภายในวงเล็บ:
# Replacing from branch foo [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific... [ 2829 ] ec18b4ba Update proto client to support patch set replacments # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
หลังจากการอัปโหลดเสร็จสิ้น การเปลี่ยนแปลงจะมีชุดโปรแกรมแก้ไขเพิ่มเติม
หากคุณต้องการอัปโหลดเฉพาะการตรวจสอบในขณะนี้จากสาขา Git ใช้ธง --current-branch
(หรือ --cbr
สั้น)
แตกต่าง
repo diff [project-list]
แสดงให้เห็นถึงการเปลี่ยนแปลงที่โดดเด่นระหว่างการกระทำและต้นไม้ที่ทำงานโดยใช้ git diff
ดาวน์โหลด
repo download target change
ดาวน์โหลดการเปลี่ยนแปลงที่ระบุจากระบบตรวจสอบและทำให้พร้อมใช้งานในไดเร็กทอรีการทำงานในเครื่องของโปรเจ็กต์ของคุณ
ตัวอย่างเช่นในการดาวน์โหลด เปลี่ยนแปลง 23,823 เป็นแพลตฟอร์ม / สร้างไดเรกทอรีของคุณ:
repo download platform/build 23823
เล่น repo sync
ลบใด ๆ ที่กระทำกับดึง repo download
หรือคุณสามารถตรวจสอบสาขาระยะไกลโดยใช้ git checkout m/master
หมายเหตุ: มีความล่าช้าในการจำลองแบบไปยังเซิร์ฟเวอร์ทั่วโลกมีความล่าช้าเล็กน้อยระหว่างมิเรอร์เมื่อมีการเปลี่ยนแปลงจะมองเห็นได้บนเว็บในดังนั้น Gerrit และเมื่อ repo download
สามารถค้นหาการเปลี่ยนแปลงสำหรับผู้ใช้ทุกคน
เพื่อทุกสิ่ง
repo forall [project-list] -c command
ดำเนินการคำสั่งเชลล์ที่กำหนดในแต่ละโปรเจ็กต์ ตัวแปรสภาพแวดล้อมเพิ่มเติมต่อไปนี้จะให้บริการโดย repo forall
:
REPO_PROJECT
ถูกตั้งค่าเป็นชื่อเฉพาะของโครงการREPO_PATH
เป็นเส้นทางที่สัมพันธ์กับรากของลูกค้าREPO_REMOTE
เป็นชื่อของระบบจากระยะไกลจากที่ประจักษ์REPO_LREV
เป็นชื่อของการแก้ไขจากประจักษ์ที่ได้รับการแปลไปเป็นสาขาการติดตามท้องถิ่น ใช้สิ่งนี้หากคุณต้องการส่งการแก้ไขรายการไปยังคำสั่ง Git ที่ดำเนินการในเครื่องREPO_RREV
เป็นชื่อของการแก้ไขจากประจักษ์ที่ตรงตามที่เขียนไว้ในไฟล์ Manifest
ตัวเลือก:
-c
: คำสั่งและข้อโต้แย้งในการดำเนินการ คำสั่งที่ได้รับการประเมินผ่าน/bin/sh
และข้อโต้แย้งใด ๆ หลังจากนั้นจะถูกส่งผ่านเป็นพารามิเตอร์เปลือกตำแหน่ง-p
: หัวแสดงโครงการก่อนที่ผลของคำสั่งที่ระบุ สิ่งนี้ทำได้โดยการเชื่อมโยงไพพ์เข้ากับสตรีม stdin, stdout และ sterr ของคำสั่ง และไพพ์เอาต์พุตทั้งหมดลงในสตรีมแบบต่อเนื่องที่แสดงในเซสชันเพจเจอร์เดียว-v
: แสดงข้อความคำสั่งเขียนไป stderr
พรุน
repo prune [project-list]
ลูกพรุน (ลบ) หัวข้อที่รวมกันแล้ว
เริ่ม
repo start branch-name [project-list]
เริ่มต้นสาขาใหม่สำหรับการพัฒนา โดยเริ่มจากการแก้ไขที่ระบุในรายการ
BRANCH_NAME
อาร์กิวเมนต์ให้คำอธิบายสั้น ๆ ของการเปลี่ยนแปลงที่คุณกำลังพยายามที่จะทำให้โครงการ หากคุณไม่ทราบว่าให้พิจารณาใช้ชื่อ default
project-list
ระบุอาร์กิวเมนต์ซึ่งโครงการที่มีส่วนร่วมในสาขาหัวข้อนี้
หมายเหตุ: (.) ระยะเวลาที่เป็นชวเลขสำหรับโครงการในไดเรกทอรีที่ทำงานปัจจุบัน
สถานะ
repo status [project-list]
เปรียบเทียบแผนผังการทำงานกับพื้นที่การแสดงละคร (ดัชนี) และการคอมมิตล่าสุดในสาขานี้ (HEAD) ในแต่ละโปรเจ็กต์ที่ระบุ แสดงบรรทัดสรุปสำหรับแต่ละไฟล์ที่มีความแตกต่างระหว่างสถานะทั้งสามนี้
เพื่อดูสถานะของเพียงสาขาปัจจุบันเรียก repo status .
. ข้อมูลสถานะแสดงตามโปรเจ็กต์ สำหรับแต่ละไฟล์ในโปรเจ็กต์ ใช้รหัสสองตัวอักษร
ในคอลัมน์แรก อักษรตัวพิมพ์ใหญ่จะระบุว่าพื้นที่การแสดงละครแตกต่างจากสถานะที่คอมมิตล่าสุดอย่างไร
จดหมาย | ความหมาย | คำอธิบาย |
---|---|---|
- | ไม่มีการเปลี่ยนแปลง | เหมือนกันใน HEAD และ index |
NS | เพิ่ม | ไม่อยู่ใน HEAD ใน index |
NS | ดัดแปลง | ใน HEAD แก้ไขใน index |
NS | ถูกลบ | ใน HEAD ไม่ใช่ใน index |
NS | เปลี่ยนชื่อ | ไม่อยู่ใน HEAD เปลี่ยนเส้นทางใน index |
ค | คัดลอกแล้ว | ไม่อยู่ใน HEAD คัดลอกมาจากที่อื่นใน index |
NS | เปลี่ยนโหมดแล้ว | เนื้อหาเดียวกันใน HEAD และดัชนี โหมดเปลี่ยน |
ยู | ยกเลิกการผสาน | ความขัดแย้งระหว่าง HEAD และดัชนี ความละเอียดที่ต้องการ |
ในคอลัมน์ที่สอง อักษรตัวพิมพ์เล็กระบุว่าไดเร็กทอรีการทำงานแตกต่างจากดัชนีอย่างไร
จดหมาย | ความหมาย | คำอธิบาย |
---|---|---|
- | ใหม่/ไม่รู้จัก | ไม่อยู่ในดัชนี ในแผนผังงาน |
NS | ดัดแปลง | ในดัชนี ในแผนผังงาน แก้ไข |
NS | ถูกลบ | ในดัชนี ไม่ใช่ในแผนผังงาน |
การจัดการข้อผิดพลาด repo
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
ข้อผิดพลาด repo: error: no branches ready for upload
จะปรากฏขึ้นเมื่อคำสั่ง repo start
ไม่ได้ทำงานที่เริ่มต้นของเซสชั่น ในการกู้คืน คุณสามารถตรวจสอบรหัสการคอมมิต เริ่มสาขาใหม่แล้วรวมเข้าด้วยกัน