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

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

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

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

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

สร้างกิ่ง

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

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

    repo start BRANCH_NAME

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

  2. (ไม่บังคับ) ยืนยันว่ามีการสร้างสาขาแล้ว

    repo status .

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

    project frameworks/native/                      branch mynewbranch

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

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

  1. หากต้องการให้แน่ใจว่าคุณกำลังทำงานกับโค้ดเบสล่าสุด ให้ซิงค์โค้ดเบสทั้งหมดโดยทำดังนี้

    repo sync

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

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

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

  4. สร้าง Android

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

จัดเตรียมและคอมมิตการเปลี่ยนแปลง

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

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

    git add -A

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

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

    git commit -s

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

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

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

      ui: Removes deprecated widget
      
    • บรรทัดที่ 2: บรรทัดว่าง เว้นบรรทัดหลังบรรทัดแรก

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

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

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

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

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

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

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

    repo upload

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

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

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

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

    Upload project frameworks/native/ to remote branch android16-release:
    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. คลิกส่งเพื่อส่งการเปลี่ยนแปลงเข้ารับการตรวจสอบ

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

พิจารณาสถานะของการเปลี่ยนแปลง

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

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

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

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

รูปที่ 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

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

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

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