หน้านี้อธิบายกระบวนการทั้งหมดในการส่งการเปลี่ยนแปลงโค้ดไปยังโครงการโอเพนซอร์ส Android (AOSP) รวมถึงวิธีขอรับการตรวจสอบและติดตามการเปลี่ยนแปลง
AOSP ใช้ Gerrit ซึ่งเป็นระบบตรวจสอบโค้ดบนเว็บสำหรับโปรเจ็กต์ที่ใช้ Git
ลงนามในข้อตกลงใบอนุญาตผู้สนับสนุน
ก่อนร่วมเปลี่ยนแปลงโค้ดสำหรับ AOSP คุณต้องอ่านข้อตกลงและส่วนหัวของใบอนุญาตผู้ให้ข้อมูลร่วมกันและลงนามในข้อตกลงใดข้อตกลงหนึ่งต่อไปนี้
- ในฐานะผู้ให้ข้อมูลร่วมกันที่ร่วมให้ข้อมูลในนามของคุณเท่านั้น ให้ลงนามในข้อตกลงใบอนุญาตผู้สนับสนุนส่วนบุคคล
- ในฐานะพนักงานที่ทำงานให้กับบริษัท โปรดตรวจสอบให้แน่ใจว่าบริษัทของคุณได้ลงนามในข้อตกลงใบอนุญาตผู้สนับสนุนขององค์กรที่อนุญาตให้คุณให้การสนับสนุนในนามของบริษัทแล้ว
เริ่มต้นสาขา
สำหรับการเปลี่ยนแปลงโค้ดแต่ละรายการที่คุณตั้งใจจะทำ ให้ทำตามขั้นตอนต่อไปนี้:
เริ่มต้น Branch ใหม่ภายในที่เก็บ Git ที่เกี่ยวข้อง Branch ไม่ใช่สำเนาของไฟล์ต้นฉบับ แต่เป็นตัวชี้ไปยังการคอมมิตที่เฉพาะเจาะจง ซึ่งทำให้การสร้างสาขาในเครื่องและการสลับไปมาเป็นไปอย่างง่ายดาย เมื่อใช้ Branch คุณจะระบุการเปลี่ยนแปลงของกันและกันได้ เรียกใช้คำสั่งนี้เพื่อ เริ่มต้น Branch
repo start BRANCH_NAME
คุณเริ่มต้น Branch ที่เป็นอิสระหลายรายการพร้อมกันได้ในที่เก็บเดียวกัน Branch BRANCH_NAME อยู่ในพื้นที่ทำงานของคุณและไม่รวมอยู่ใน Gerrit หรือในโครงสร้างต้นทางสุดท้าย นอกจากนี้ Branch ยังเจาะจงเฉพาะโปรเจ็กต์ที่คุณอยู่ ดังนั้นหากต้องการเปลี่ยนไฟล์ในโปรเจ็กต์อื่นให้เป็นส่วนหนึ่งของการเปลี่ยนแปลงเดียวกัน คุณจะต้องใช้ Branch ในแต่ละโปรเจ็กต์ที่เปลี่ยนไฟล์
(ไม่บังคับ) ยืนยันว่าได้สร้างสาขาโดยทำดังนี้
repo status .
คุณควรเห็น Branch ที่สร้างขึ้นใหม่ เช่น
project frameworks/native/ branch mynewbranch
สร้างและทดสอบการเปลี่ยนแปลง
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างและทดสอบการเปลี่ยนแปลง
ซิงค์ฐานของโค้ดทั้งหมดเพื่อให้ทำงานกับฐานของโค้ดล่าสุดได้
repo sync
หากคุณมีความขัดแย้งระหว่างการซิงค์ โปรดดูขั้นตอนที่ 2-4 ของหัวข้อแก้ไขความขัดแย้งในการซิงค์
หารหัสที่จะเปลี่ยน ลองใช้ Android Code Search เพื่อหาโค้ด คุณใช้ Android Code Search เพื่อดูซอร์สโค้ดของ AOSP ตามที่แสดงอยู่ขณะใช้งานจริงได้ สำหรับข้อมูลเพิ่มเติม โปรดดู การเริ่มต้นใช้งาน Code Search หากต้องการดูโค้ดทั้งหมดใน Branch ของ
main
ภายในการค้นหาโค้ดของ Android ให้ไปที่https://cs.android.com/android/platform/superproject/main
แก้ไขหรือเพิ่มไฟล์ต้นฉบับ สำหรับการเปลี่ยนแปลงที่เกิดขึ้น
- ทำตามแนวทางปฏิบัติแนะนำในหัวข้อรวมส่วนหัวใบอนุญาต
สำหรับโค้ด Java ให้ทำตามรูปแบบโค้ด Java สำหรับ AOSP สำหรับผู้ร่วมให้ข้อมูล
AOSP บางส่วนเขียนด้วย Kotlin (
.kt
) และคุณใช้ Kotlin ในพื้นที่ของแพลตฟอร์มซึ่งเขียนด้วย Kotlin อยู่แล้วได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ Kotlin ใน Android ได้ที่คู่มือสไตล์ Kotlin และคู่มือการทำงานร่วมกันของ Kotlin-Java สำหรับนักพัฒนาซอฟต์แวร์ Android ดูคำแนะนำที่ครอบคลุมยิ่งขึ้นเกี่ยวกับ Kotlin ได้ที่เว็บไซต์ภาษา Kotlinเมื่อเขียน API ให้ทำตามหลักเกณฑ์ Android API ใช้หลักเกณฑ์เหล่านี้เพื่อดูบริบทเบื้องหลังการตัดสินใจเกี่ยวกับ API ของ Android การเพิ่มและการแก้ไข API ของแพลตฟอร์มได้รับการตรวจสอบโดย Metalava
เริ่มต้นแล้วทำตามสิ่งที่เปลี่ยนแปลง
commit คือหน่วยพื้นฐานของการควบคุมการแก้ไขใน Git และประกอบด้วยสแนปชอตของโครงสร้างไดเรกทอรีและเนื้อหาไฟล์สำหรับทั้งโปรเจ็กต์ ทำตามขั้นตอนต่อไปนี้เพื่อยอมรับการเปลี่ยนแปลง
Git ลงทะเบียนโดยค่าเริ่มต้น แต่จะไม่ติดตามการเปลี่ยนแปลงที่คุณทำ หากต้องการสั่งให้ Git ติดตามการเปลี่ยนแปลง คุณต้องทำเครื่องหมายหรือทำให้การเปลี่ยนแปลงเหล่านั้นรวมอยู่ในคอมมิต เรียกใช้คำสั่งนี้เพื่อทำการเปลี่ยนแปลง
git add -A
คำสั่งนี้จะติดตามการเปลี่ยนแปลงที่คุณดำเนินการกับไฟล์ต่างๆ
นำไฟล์ในพื้นที่ทดลองใช้แล้วผูกหรือจัดเก็บไฟล์เหล่านั้นไว้ในฐานข้อมูลในเครื่องของคุณ
git commit -s
โดยค่าเริ่มต้น เครื่องมือแก้ไขข้อความจะเปิดขึ้นและคุณจะได้รับข้อความแจ้งให้ระบุข้อความคอมมิต
ระบุข้อความคอมมิตในรูปแบบต่อไปนี้
บรรทัดที่ 1: บรรทัดแรก ระบุสรุปการเปลี่ยนแปลงหนึ่งบรรทัด (ไม่เกิน 50 อักขระ) ลองใช้คำนำหน้าเพื่ออธิบายพื้นที่ที่คุณเปลี่ยนแปลง ตามด้วยคำอธิบายการเปลี่ยนแปลงที่คุณทำในคอมมิตนี้ ดังตัวอย่างต่อไปนี้ที่มีการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้
ui: Removes deprecated widget
บรรทัดที่ 2: บรรทัดว่าง ให้บรรทัดว่างต่อท้ายบรรทัดแรก
บรรทัดที่ 3: เนื้อความ โปรดเขียนคำอธิบายแบบยาวที่ปิดช่องโหว่ได้ไม่เกิน 72 อักขระ อธิบายว่าการเปลี่ยนแปลงนี้ช่วยแก้ไขปัญหาใดและอย่างไร แม้ว่าส่วนเนื้อหาจะเป็นตัวเลือก แต่ก็เป็นประโยชน์สำหรับคนอื่นๆ ที่ต้องการอ้างอิงการเปลี่ยนแปลง อย่าลืมใส่สรุปสั้นๆ เกี่ยวกับสมมติฐานหรือข้อมูลเบื้องหลังที่อาจมีความสำคัญเมื่อผู้ให้ข้อมูลร่วมกันอีกคนหนึ่งทำงานในฟีเจอร์นี้
หากต้องการอ่านบล็อกเกี่ยวกับคำอธิบายคอมมิตที่ดี (พร้อมตัวอย่าง) โปรดดูวิธีเขียนข้อความคอมมิต Git
บันทึกคอมมิต
ระบบจะเพิ่มรหัสการเปลี่ยนแปลงที่ไม่ซ้ำกัน รวมถึงชื่อและอีเมลของคุณ ที่ให้ไว้ระหว่าง repo init
ลงในข้อความคอมมิตโดยอัตโนมัติ
อัปโหลดการเปลี่ยนแปลงเพื่อรับการตรวจสอบ
หลังจากที่คุณยืนยันการเปลี่ยนแปลงประวัติ Git ส่วนตัวแล้ว ให้อัปโหลดไปยัง Gerrit:
เรียกใช้คำสั่งต่อไปนี้เพื่ออัปโหลดคอมมิตทั้งหมดในทุกโปรเจ็กต์
repo upload
การเปลี่ยนแปลงทั้งหมดในทุกโปรเจ็กต์จะรวมอยู่ในการอัปโหลด
คุณจะได้รับแจ้งให้เรียกใช้สคริปต์ฮุก
กด 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)?
กด y แล้วกด Enter เพื่ออนุมัติการอัปโหลด
คุณควรได้รับข้อความที่คล้ายกับ remote: SUCCESS
ขอรับการตรวจสอบ
หลังจากอัปโหลดสำเร็จ Repo จะแสดงลิงก์ไปยังการเปลี่ยนแปลงใน Gerrit คลิกลิงก์เพื่อดูการเปลี่ยนแปลงในเซิร์ฟเวอร์การตรวจสอบ เพิ่มความคิดเห็น หรือขอผู้ตรวจสอบที่เจาะจงสำหรับการเปลี่ยนแปลง การเปลี่ยนแปลงทั้งหมดในโค้ดต้องได้รับการตรวจสอบโดยเจ้าของโค้ดที่เหมาะสม หากต้องการขอรับการตรวจสอบ ให้ทำดังนี้
ใน Gerrit คลิกเจ้าของที่แนะนำ
รูปที่ 1 แนะนำลิงก์เจ้าของใน Gerrit
กล่องโต้ตอบของผู้ตรวจสอบจะปรากฏขึ้น กล่องโต้ตอบนี้มีรายชื่อเจ้าของโค้ดที่สามารถ ตรวจสอบการเปลี่ยนแปลงของคุณได้
คลิกเจ้าของโค้ดเพื่อเพิ่มพวกเขาลงในรีวิว
ปุ่มส่งจะเปิดใช้งาน
(ไม่บังคับ) พิมพ์ที่อยู่อีเมลของคนอื่นๆ ที่คุณต้องการตรวจสอบการเปลี่ยนแปลงของคุณ
(ไม่บังคับ) คลิก +1 ถัดจากส่งอัตโนมัติเพื่อส่งการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณได้รับการอนุมัติ หากคุณไม่คลิกปุ่มนี้ พนักงานของ Google จะต้องส่งการเปลี่ยนแปลงให้คุณ
คลิกส่งเพื่อส่งการเปลี่ยนแปลงเข้ารับการตรวจสอบ
เจ้าของโค้ดจะตรวจสอบการเปลี่ยนแปลงโค้ดและแสดงความคิดเห็นเพื่อให้คุณแก้ไขหรืออนุมัติการเปลี่ยนแปลง
กำหนดสถานะการเปลี่ยนแปลง
หากต้องการดูสถานะของไฟล์ในการเปลี่ยนแปลง ให้มองหาไอคอนต่อไปนี้ถัดจากไฟล์ในการเปลี่ยนแปลง
- (ไอคอนเครื่องหมายถูก): อนุมัติโดยเจ้าของโค้ด
- (ไอคอนกากบาท): ไม่ได้รับอนุมัติจากเจ้าของโค้ด
- (ไอคอนนาฬิกา): รอการอนุมัติจากเจ้าของโค้ด
รูปต่อไปนี้แสดงไอคอนสถานะที่ใช้กับไฟล์ในการเปลี่ยนแปลง
รูปที่ 2 ตัวอย่างไฟล์ที่มีไอคอนแสดงการอนุมัติจากเจ้าของโค้ด
แก้ไขความคิดเห็นและอัปโหลดการเปลี่ยนแปลงแทนที่
หากผู้ตรวจสอบขอให้แก้ไขการอัปเดต คุณจะแก้ไขคอมมิตภายใน Git ได้ ซึ่งจะส่งผลให้ได้รับชุดแพตช์ใหม่ในการเปลี่ยนแปลงเดียวกัน
วิธีแก้ไขความคิดเห็นและแก้ไขการเปลี่ยนแปลง
ทำตามขั้นตอนที่ 2-4 ในสร้างและทดสอบการเปลี่ยนแปลง
เรียกใช้คำสั่งต่อไปนี้เพื่อแก้ไขการเปลี่ยนแปลง
git add -A git commit --amend
เมื่อคุณอัปโหลดการเปลี่ยนแปลงที่มีการแก้ไข การเปลี่ยนแปลงดังกล่าวจะแทนที่การเปลี่ยนแปลงเดิมทั้งใน Gerrit และในประวัติ Git ในเครื่อง
แก้ไขข้อขัดแย้งในการซิงค์
หากมีการส่งการเปลี่ยนแปลงอื่นๆ ไปยังแผนผังต้นทางที่ขัดแย้งกับการเปลี่ยนแปลงของคุณ คุณจะได้รับข้อความว่าคุณมีความขัดแย้ง หากต้องการแก้ไขข้อขัดแย้ง ให้ทำดังนี้
ตรวจสอบให้แน่ใจว่าคุณกำลังทำงานกับรหัสล่าสุด:
repo sync .
คำสั่ง
repo sync
จะดึงข้อมูลอัปเดตจากเซิร์ฟเวอร์ต้นทาง จากนั้นพยายามปรับฐานHEAD
อีกครั้งบนรีโมตตัวใหม่ให้เป็นHEAD
โดยอัตโนมัติหากฐานะอัตโนมัติไม่สำเร็จ ให้ดำเนินการใหม่ด้วยตัวเองดังนี้
repo rebase .
แก้ไขความขัดแย้งในการรวม หากไม่มีวิธีการที่ต้องการในการแก้ไขความขัดแย้งในการรวม คุณใช้
git mergetool
เพื่อแก้ไขความขัดแย้งระหว่างไฟล์ด้วยตนเองได้เมื่อแก้ไขไฟล์ที่ขัดแย้งกันเรียบร้อยแล้ว ให้เรียกใช้คำสั่งนี้เพื่อใช้การคอมมิตใหม่
git rebase --continue
ส่งการเปลี่ยนแปลง
หลังจากที่ส่งข้อมูลผ่านกระบวนการตรวจสอบและยืนยันตัวตนแล้ว
ผู้ตรวจสอบของ Google จะต้องส่งรหัสให้คุณ ผู้ใช้คนอื่นๆ สามารถเรียกใช้ repo sync
เพื่อดึงข้อมูลการอัปเดตไปยังไคลเอ็นต์ท้องถิ่นที่เกี่ยวข้อง
หลังจากระบบผสานรวมข้อมูลที่ส่งแล้ว คุณสามารถไปที่แดชบอร์ดการผสานรวม Android Continuous เพื่อตรวจสอบเมื่องานที่ส่งได้รับการผสานรวมไว้ในแผนผัง