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