การอ้างอิงคำสั่ง Repo

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 ไม่ได้ทำงานที่เริ่มต้นของเซสชั่น ในการกู้คืน คุณสามารถตรวจสอบรหัสการคอมมิต เริ่มสาขาใหม่แล้วรวมเข้าด้วยกัน