หน้านี้อธิบายกระบวนการทั้งหมดในการส่งการเปลี่ยนแปลงโค้ดไปยังโครงการโอเพนซอร์ส Android (AOSP) รวมถึงวิธีขอรับการตรวจสอบและติดตามการเปลี่ยนแปลง
AOSP ใช้ Gerrit ซึ่งเป็นระบบรีวิวโค้ดบนเว็บสำหรับโปรเจ็กต์ที่ใช้ Git
ลงนามในข้อตกลงใบอนุญาตผู้สนับสนุน
ก่อนที่จะส่งการเปลี่ยนแปลงโค้ดสำหรับ AOSP คุณต้องอ่าน ข้อตกลงและส่วนหัวของใบอนุญาตสำหรับผู้ร่วมให้ข้อมูล และลงนามในข้อตกลงต่อไปนี้ข้อใดข้อหนึ่ง
- ในฐานะผู้ร่วมให้ข้อมูลรายบุคคลที่ร่วมให้ข้อมูลในนามของคุณเท่านั้น โปรดลงนามในข้อตกลงอนุญาตให้ใช้สิทธิสำหรับผู้ร่วมให้ข้อมูลรายบุคคล
- ในฐานะพนักงานที่ทำงานให้กับบริษัท โปรดตรวจสอบว่าบริษัทของคุณได้ลงนามใน ข้อตกลงอนุญาตให้ใช้เนื้อหาสำหรับผู้มีส่วนร่วมที่เป็นองค์กร ซึ่งอนุญาตให้คุณมีส่วนร่วมในนามของบริษัท
เริ่มสาขา
สําหรับการเปลี่ยนแปลงโค้ดแต่ละรายการที่คุณต้องการทํา ให้ทําตามขั้นตอนต่อไปนี้
เริ่มสาขาใหม่ภายในที่เก็บ Git ที่เกี่ยวข้อง Branch ไม่ใช่สำเนา ของไฟล์ต้นฉบับ แต่เป็น Pointer ไปยังคอมมิตที่เฉพาะเจาะจง ซึ่งทำให้ การสร้าง Branch ในเครื่องและการสลับระหว่าง Branch เป็นปฏิบัติการที่มีน้ำหนักเบา การใช้กิ่งก้านจะช่วยให้คุณระบุการเปลี่ยนแปลงจากกันได้ เรียกใช้คำสั่งนี้เพื่อ เริ่มสาขา
repo start BRANCH_NAMEคุณสามารถเริ่มหลายสาขาที่เป็นอิสระพร้อมกันในที่เก็บเดียวกันได้ กิ่ง BRANCH_NAME อยู่ในพื้นที่ของเวิร์กสเปซและไม่ได้รวมอยู่ใน Gerrit หรือในโครงสร้างแหล่งที่มาสุดท้าย นอกจากนี้ สาขายังเฉพาะเจาะจงกับโปรเจ็กต์ที่คุณกำลังทำงานอยู่ด้วย ดังนั้นหากคุณต้องการเปลี่ยน ไฟล์ในโปรเจ็กต์ต่างๆ เป็นส่วนหนึ่งของการเปลี่ยนแปลงเดียวกัน คุณจะต้องมีสาขา ในแต่ละโปรเจ็กต์ที่คุณเปลี่ยนไฟล์
(ไม่บังคับ) ยืนยันว่ามีการสร้าง Branch แล้ว
repo status .คุณควรเห็น Branch ที่สร้างขึ้นใหม่ เช่น
project frameworks/native/ branch mynewbranch
ทำการเปลี่ยนแปลงและทดสอบ
ทำตามขั้นตอนต่อไปนี้เพื่อทำการเปลี่ยนแปลงและทดสอบ
หากต้องการให้แน่ใจว่าคุณกำลังทำงานกับโค้ดเบสล่าสุด ให้ซิงค์โค้ดเบสทั้งหมดโดยทำดังนี้
repo syncหากมีความขัดแย้งระหว่างการซิงค์ โปรดดูขั้นตอนที่ 2-4 ของหัวข้อแก้ไขความขัดแย้งในการซิงค์
ค้นหารหัสที่จะเปลี่ยน หากต้องการค้นหาโค้ด ให้ลองใช้ Android Code Search คุณใช้ 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 android17-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
กล่องโต้ตอบผู้ตรวจสอบจะปรากฏขึ้น กล่องโต้ตอบนี้มีรายชื่อเจ้าของโค้ดที่ สามารถตรวจสอบการเปลี่ยนแปลงของคุณได้
คลิกเจ้าของโค้ดเพื่อเพิ่มลงในการตรวจสอบ
ระบบจะเปิดใช้งานปุ่มส่ง
(ไม่บังคับ) พิมพ์อีเมลของบุคคลอื่นที่ต้องการให้ตรวจสอบการเปลี่ยนแปลง
คลิกส่งเพื่อส่งการเปลี่ยนแปลงเข้ารับการตรวจสอบ
ผู้ดูแลโค้ดจะตรวจสอบการเปลี่ยนแปลงโค้ดของคุณ และหากยอมรับ ก็จะเลือกการเปลี่ยนแปลง และผสานรวมเข้ากับสาขาการพัฒนาภายใน
พิจารณาสถานะของการเปลี่ยนแปลง
หากต้องการดูสถานะของไฟล์ในการเปลี่ยนแปลง ให้มองหาไอคอนต่อไปนี้ข้างไฟล์ในการเปลี่ยนแปลง
- (เครื่องหมายถูก ไอคอน): ได้รับการอนุมัติจากเจ้าของโค้ด
- (ไอคอนกากบาท): ไม่ได้รับอนุมัติจากเจ้าของโค้ด
- (clock icon): รอการอนุมัติจากเจ้าของโค้ด
รูปต่อไปนี้แสดงไอคอนสถานะเหล่านี้ที่ใช้กับไฟล์ในการเปลี่ยนแปลง
รูปที่ 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 เพื่อตรวจสอบเวลาที่ระบบผสานรวมการส่งของคุณเข้ากับโครงสร้างได้