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

หน้านี้อธิบายกระบวนการทั้งหมดของการส่งการเปลี่ยนแปลงโค้ดไปยังโครงการโอเพนซอร์ส 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 ตามที่แสดงเมื่อคุณใช้งานจริง ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเริ่มต้นใช้งานการค้นหาโค้ด หากต้องการดูโค้ดทั้งหมดในสาขา main ภายในการค้นหาโค้ด Android ให้ไปที่ https://cs.android.com/android/platform/superproject/main

  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
    

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

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

  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 เพื่อตรวจสอบว่าระบบผสานข้อมูลที่ส่งเข้ามาไว้ในต้นไม้แล้วหรือยัง