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