ส่งการเปลี่ยนแปลงโค้ด

หน้านี้อธิบายกระบวนการทั้งหมดในการส่งการเปลี่ยนแปลงโค้ดไปยังโครงการโอเพนซอร์ส Android (AOSP) รวมถึงวิธีขอรับการตรวจสอบและติดตามการเปลี่ยนแปลง

AOSP ใช้ Gerrit ซึ่งเป็นระบบตรวจสอบโค้ดบนเว็บสำหรับโปรเจ็กต์ที่ใช้ Git

ลงนามในข้อตกลงใบอนุญาตผู้สนับสนุน

ก่อนร่วมเปลี่ยนแปลงโค้ดสำหรับ AOSP คุณต้องอ่านข้อตกลงและส่วนหัวของใบอนุญาตผู้ให้ข้อมูลร่วมกันและลงนามในข้อตกลงใดข้อตกลงหนึ่งต่อไปนี้

เริ่มต้นสาขา

สำหรับการเปลี่ยนแปลงโค้ดแต่ละรายการที่คุณตั้งใจจะทำ ให้ทำตามขั้นตอนต่อไปนี้:

  1. เริ่มต้น Branch ใหม่ภายในที่เก็บ Git ที่เกี่ยวข้อง Branch ไม่ใช่สำเนาของไฟล์ต้นฉบับ แต่เป็นตัวชี้ไปยังการคอมมิตที่เฉพาะเจาะจง ซึ่งทำให้การสร้างสาขาในเครื่องและการสลับไปมาเป็นไปอย่างง่ายดาย เมื่อใช้ Branch คุณจะระบุการเปลี่ยนแปลงของกันและกันได้ เรียกใช้คำสั่งนี้เพื่อ เริ่มต้น Branch

    repo start BRANCH_NAME
    

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

  2. (ไม่บังคับ) ยืนยันว่าได้สร้างสาขาโดยทำดังนี้

    repo status .
    

    คุณควรเห็น Branch ที่สร้างขึ้นใหม่ เช่น

    project frameworks/native/                      branch mynewbranch
    

สร้างและทดสอบการเปลี่ยนแปลง

ทำตามขั้นตอนต่อไปนี้เพื่อสร้างและทดสอบการเปลี่ยนแปลง

  1. ซิงค์ฐานของโค้ดทั้งหมดเพื่อให้ทำงานกับฐานของโค้ดล่าสุดได้

    repo sync
    

    หากคุณมีความขัดแย้งระหว่างการซิงค์ โปรดดูขั้นตอนที่ 2-4 ของหัวข้อแก้ไขความขัดแย้งในการซิงค์

  2. หารหัสที่จะเปลี่ยน ลองใช้ Android Code Search เพื่อหาโค้ด คุณใช้ Android Code Search เพื่อดูซอร์สโค้ดของ AOSP ตามที่แสดงอยู่ขณะใช้งานจริงได้ สำหรับข้อมูลเพิ่มเติม โปรดดู การเริ่มต้นใช้งาน Code Search หากต้องการดูโค้ดทั้งหมดใน Branch ของ main ภายในการค้นหาโค้ดของ Android ให้ไปที่ https://cs.android.com/android/platform/superproject/main

  3. แก้ไขหรือเพิ่มไฟล์ต้นฉบับ สำหรับการเปลี่ยนแปลงที่เกิดขึ้น

  4. สร้าง Android

  5. ทดสอบบิลด์

เริ่มต้นแล้วทำตามสิ่งที่เปลี่ยนแปลง

commit คือหน่วยพื้นฐานของการควบคุมการแก้ไขใน Git และประกอบด้วยสแนปชอตของโครงสร้างไดเรกทอรีและเนื้อหาไฟล์สำหรับทั้งโปรเจ็กต์ ทำตามขั้นตอนต่อไปนี้เพื่อยอมรับการเปลี่ยนแปลง

  1. Git ลงทะเบียนโดยค่าเริ่มต้น แต่จะไม่ติดตามการเปลี่ยนแปลงที่คุณทำ หากต้องการสั่งให้ Git ติดตามการเปลี่ยนแปลง คุณต้องทำเครื่องหมายหรือทำให้การเปลี่ยนแปลงเหล่านั้นรวมอยู่ในคอมมิต เรียกใช้คำสั่งนี้เพื่อทำการเปลี่ยนแปลง

    git add -A
    

    คำสั่งนี้จะติดตามการเปลี่ยนแปลงที่คุณดำเนินการกับไฟล์ต่างๆ

  2. นำไฟล์ในพื้นที่ทดลองใช้แล้วผูกหรือจัดเก็บไฟล์เหล่านั้นไว้ในฐานข้อมูลในเครื่องของคุณ

    git commit -s
    

    โดยค่าเริ่มต้น เครื่องมือแก้ไขข้อความจะเปิดขึ้นและคุณจะได้รับข้อความแจ้งให้ระบุข้อความคอมมิต

  3. ระบุข้อความคอมมิตในรูปแบบต่อไปนี้

    • บรรทัดที่ 1: บรรทัดแรก ระบุสรุปการเปลี่ยนแปลงหนึ่งบรรทัด (ไม่เกิน 50 อักขระ) ลองใช้คำนำหน้าเพื่ออธิบายพื้นที่ที่คุณเปลี่ยนแปลง ตามด้วยคำอธิบายการเปลี่ยนแปลงที่คุณทำในคอมมิตนี้ ดังตัวอย่างต่อไปนี้ที่มีการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้

      ui: Removes deprecated widget
      
    • บรรทัดที่ 2: บรรทัดว่าง ให้บรรทัดว่างต่อท้ายบรรทัดแรก

    • บรรทัดที่ 3: เนื้อความ โปรดเขียนคำอธิบายแบบยาวที่ปิดช่องโหว่ได้ไม่เกิน 72 อักขระ อธิบายว่าการเปลี่ยนแปลงนี้ช่วยแก้ไขปัญหาใดและอย่างไร แม้ว่าส่วนเนื้อหาจะเป็นตัวเลือก แต่ก็เป็นประโยชน์สำหรับคนอื่นๆ ที่ต้องการอ้างอิงการเปลี่ยนแปลง อย่าลืมใส่สรุปสั้นๆ เกี่ยวกับสมมติฐานหรือข้อมูลเบื้องหลังที่อาจมีความสำคัญเมื่อผู้ให้ข้อมูลร่วมกันอีกคนหนึ่งทำงานในฟีเจอร์นี้

    หากต้องการอ่านบล็อกเกี่ยวกับคำอธิบายคอมมิตที่ดี (พร้อมตัวอย่าง) โปรดดูวิธีเขียนข้อความคอมมิต Git

  4. บันทึกคอมมิต

ระบบจะเพิ่มรหัสการเปลี่ยนแปลงที่ไม่ซ้ำกัน รวมถึงชื่อและอีเมลของคุณ ที่ให้ไว้ระหว่าง repo init ลงในข้อความคอมมิตโดยอัตโนมัติ

อัปโหลดการเปลี่ยนแปลงเพื่อรับการตรวจสอบ

หลังจากที่คุณยืนยันการเปลี่ยนแปลงประวัติ Git ส่วนตัวแล้ว ให้อัปโหลดไปยัง Gerrit:

  1. เรียกใช้คำสั่งต่อไปนี้เพื่ออัปโหลดคอมมิตทั้งหมดในทุกโปรเจ็กต์

    repo upload
    

    การเปลี่ยนแปลงทั้งหมดในทุกโปรเจ็กต์จะรวมอยู่ในการอัปโหลด

    คุณจะได้รับแจ้งให้เรียกใช้สคริปต์ฮุก

  2. กด a แล้วกด Enter

    ระบบจะแจ้งให้คุณอนุมัติการอัปโหลดดังนี้

    Upload project frameworks/native/ to remote branch main:
    branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
           ff46b36d android codelab change
    to https://android-review.googlesource.com/ (y/N)?
    
  3. กด y แล้วกด Enter เพื่ออนุมัติการอัปโหลด

คุณควรได้รับข้อความที่คล้ายกับ remote: SUCCESS

ขอรับการตรวจสอบ

หลังจากอัปโหลดสำเร็จ Repo จะแสดงลิงก์ไปยังการเปลี่ยนแปลงใน Gerrit คลิกลิงก์เพื่อดูการเปลี่ยนแปลงในเซิร์ฟเวอร์การตรวจสอบ เพิ่มความคิดเห็น หรือขอผู้ตรวจสอบที่เจาะจงสำหรับการเปลี่ยนแปลง การเปลี่ยนแปลงทั้งหมดในโค้ดต้องได้รับการตรวจสอบโดยเจ้าของโค้ดที่เหมาะสม หากต้องการขอรับการตรวจสอบ ให้ทำดังนี้

  1. ใน Gerrit คลิกเจ้าของที่แนะนำ

    แนะนำลิงก์เจ้าของใน Gerrit

    รูปที่ 1 แนะนำลิงก์เจ้าของใน Gerrit

    กล่องโต้ตอบของผู้ตรวจสอบจะปรากฏขึ้น กล่องโต้ตอบนี้มีรายชื่อเจ้าของโค้ดที่สามารถ ตรวจสอบการเปลี่ยนแปลงของคุณได้

  2. คลิกเจ้าของโค้ดเพื่อเพิ่มพวกเขาลงในรีวิว

    ปุ่มส่งจะเปิดใช้งาน

  3. (ไม่บังคับ) พิมพ์ที่อยู่อีเมลของคนอื่นๆ ที่คุณต้องการตรวจสอบการเปลี่ยนแปลงของคุณ

  4. (ไม่บังคับ) คลิก +1 ถัดจากส่งอัตโนมัติเพื่อส่งการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณได้รับการอนุมัติ หากคุณไม่คลิกปุ่มนี้ พนักงานของ Google จะต้องส่งการเปลี่ยนแปลงให้คุณ

  5. คลิกส่งเพื่อส่งการเปลี่ยนแปลงเข้ารับการตรวจสอบ

เจ้าของโค้ดจะตรวจสอบการเปลี่ยนแปลงโค้ดและแสดงความคิดเห็นเพื่อให้คุณแก้ไขหรืออนุมัติการเปลี่ยนแปลง

กำหนดสถานะการเปลี่ยนแปลง

หากต้องการดูสถานะของไฟล์ในการเปลี่ยนแปลง ให้มองหาไอคอนต่อไปนี้ถัดจากไฟล์ในการเปลี่ยนแปลง

  • (ไอคอนเครื่องหมายถูก): อนุมัติโดยเจ้าของโค้ด
  • (ไอคอนกากบาท): ไม่ได้รับอนุมัติจากเจ้าของโค้ด
  • (ไอคอนนาฬิกา): รอการอนุมัติจากเจ้าของโค้ด

รูปต่อไปนี้แสดงไอคอนสถานะที่ใช้กับไฟล์ในการเปลี่ยนแปลง

ตัวอย่างไฟล์ที่มีไอคอนแสดงการอนุมัติจากเจ้าของโค้ด

รูปที่ 2 ตัวอย่างไฟล์ที่มีไอคอนแสดงการอนุมัติจากเจ้าของโค้ด

แก้ไขความคิดเห็นและอัปโหลดการเปลี่ยนแปลงแทนที่

หากผู้ตรวจสอบขอให้แก้ไขการอัปเดต คุณจะแก้ไขคอมมิตภายใน Git ได้ ซึ่งจะส่งผลให้ได้รับชุดแพตช์ใหม่ในการเปลี่ยนแปลงเดียวกัน

วิธีแก้ไขความคิดเห็นและแก้ไขการเปลี่ยนแปลง

  1. ทำตามขั้นตอนที่ 2-4 ในสร้างและทดสอบการเปลี่ยนแปลง

  2. เรียกใช้คำสั่งต่อไปนี้เพื่อแก้ไขการเปลี่ยนแปลง

    git add -A
    git commit --amend
    
  3. อัปโหลดการเปลี่ยนแปลง

เมื่อคุณอัปโหลดการเปลี่ยนแปลงที่มีการแก้ไข การเปลี่ยนแปลงดังกล่าวจะแทนที่การเปลี่ยนแปลงเดิมทั้งใน Gerrit และในประวัติ Git ในเครื่อง

แก้ไขข้อขัดแย้งในการซิงค์

หากมีการส่งการเปลี่ยนแปลงอื่นๆ ไปยังแผนผังต้นทางที่ขัดแย้งกับการเปลี่ยนแปลงของคุณ คุณจะได้รับข้อความว่าคุณมีความขัดแย้ง หากต้องการแก้ไขข้อขัดแย้ง ให้ทำดังนี้

  1. ตรวจสอบให้แน่ใจว่าคุณกำลังทำงานกับรหัสล่าสุด:

    repo sync .
    

    คำสั่ง repo sync จะดึงข้อมูลอัปเดตจากเซิร์ฟเวอร์ต้นทาง จากนั้นพยายามปรับฐาน HEAD อีกครั้งบนรีโมตตัวใหม่ให้เป็น HEAD โดยอัตโนมัติ

  2. หากฐานะอัตโนมัติไม่สำเร็จ ให้ดำเนินการใหม่ด้วยตัวเองดังนี้

    repo rebase .
    
  3. แก้ไขความขัดแย้งในการรวม หากไม่มีวิธีการที่ต้องการในการแก้ไขความขัดแย้งในการรวม คุณใช้git mergetoolเพื่อแก้ไขความขัดแย้งระหว่างไฟล์ด้วยตนเองได้

  4. เมื่อแก้ไขไฟล์ที่ขัดแย้งกันเรียบร้อยแล้ว ให้เรียกใช้คำสั่งนี้เพื่อใช้การคอมมิตใหม่

    git rebase --continue
    

ส่งการเปลี่ยนแปลง

หลังจากที่ส่งข้อมูลผ่านกระบวนการตรวจสอบและยืนยันตัวตนแล้ว ผู้ตรวจสอบของ Google จะต้องส่งรหัสให้คุณ ผู้ใช้คนอื่นๆ สามารถเรียกใช้ repo sync เพื่อดึงข้อมูลการอัปเดตไปยังไคลเอ็นต์ท้องถิ่นที่เกี่ยวข้อง

หลังจากระบบผสานรวมข้อมูลที่ส่งแล้ว คุณสามารถไปที่แดชบอร์ดการผสานรวม Android Continuous เพื่อตรวจสอบเมื่องานที่ส่งได้รับการผสานรวมไว้ในแผนผัง