หน้านี้อธิบายขั้นตอนทั้งหมดในการส่งโปรแกรมแก้ไขไปยัง Android Open Source Project (AOSP) รวมถึงวิธีขอรับการตรวจสอบและติดตามการเปลี่ยนแปลงของคุณด้วย Gerrit
ข้อกำหนดเบื้องต้น
ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ทำสิ่งต่อไปนี้แล้ว:
- เริ่มต้นสภาพแวดล้อมการสร้างของคุณ
- ดาวน์โหลดแหล่งที่มา
- สร้างรหัสผ่าน โดยใช้ตัวสร้างรหัสผ่าน
ทรัพยากร
- สำหรับรายละเอียดเกี่ยวกับ Repo และ Git โปรดดูหน้า เครื่องมือควบคุมแหล่งที่มา
- สำหรับข้อมูลเกี่ยวกับบทบาทต่างๆ ภายในชุมชนโอเพนซอร์สของ Android โปรดดูหน้า บทบาทของโปรเจ็ กต์
- สำหรับข้อมูลการอนุญาตให้ใช้สิทธิ์เกี่ยวกับรหัสสนับสนุนไปยังแพลตฟอร์ม Android โปรดดูที่หน้า ใบอนุญาต
สำหรับผู้มีส่วนร่วม
กำลังตรวจสอบกับเซิร์ฟเวอร์
หากคุณแบ่งปันที่อยู่ IP กับผู้ใช้รายอื่น โควต้าสามารถถูกเรียกใช้ได้แม้ในรูปแบบการใช้งานปกติ กรณีนี้อาจเกิดขึ้นได้ ตัวอย่างเช่น ผู้ใช้จำนวนมากซิงค์ไคลเอ็นต์ใหม่จากที่อยู่ IP เดียวกันภายในระยะเวลาสั้นๆ การเข้าถึงที่รับรองความถูกต้องจะใช้โควต้าแยกต่างหากสำหรับผู้ใช้แต่ละราย โดยไม่คำนึงถึงที่อยู่ IP หากต้องการอ่านเกี่ยวกับการเปิดใช้งานการเข้าถึงที่รับรองความถูกต้อง โปรดดู การใช้การพิสูจน์ ตัวตน
เริ่มต้นสาขา Repo
สำหรับการเปลี่ยนแปลงแต่ละครั้งที่คุณตั้งใจจะทำ ให้เริ่มสาขาใหม่ภายในที่เก็บ Git ที่เกี่ยวข้อง:
repo start NAME .
คุณสามารถเริ่มต้นสาขาอิสระหลายสาขาพร้อมกันในที่เก็บเดียวกัน สาขา NAME
อยู่ในพื้นที่ทำงานของคุณ และไม่ได้รวมอยู่ใน Gerrit หรือในแผนผังต้นทางสุดท้าย
การเปลี่ยนแปลงของคุณ
แก้ไขไฟล์ต้นฉบับ และตรวจสอบการเปลี่ยนแปลงของคุณ
ยอมรับการเปลี่ยนแปลงในที่เก็บโลคัลของคุณด้วยคำสั่งเหล่านี้:
git add -A
git commit -s
เปลี่ยนคำอธิบาย
- บรรทัดที่ 1: พาดหัว
ระบุข้อมูลสรุปหนึ่งบรรทัด ( สูงสุด 50 อักขระ )
รูปแบบนี้ถูกใช้โดย Git และ Gerrit สำหรับการแสดงผลต่างๆ เป็นส่วนที่สำคัญที่สุดและหนาแน่นที่สุดของข้อความยืนยันของคุณ ลองใช้คำนำหน้าเพื่ออธิบายพื้นที่ที่คุณเปลี่ยนแปลง ตามด้วยคำอธิบายการเปลี่ยนแปลงที่คุณทำในคอมมิตนี้ เช่น อันที่มี
ui
เป็นคำนำหน้า:ui: Removes deprecated widget
- บรรทัดที่ 2: ว่างเปล่า
เว้นบรรทัดนี้ว่างไว้เสมอ
- บรรทัดที่ 3: ร่างกาย
เขียนคำอธิบายให้ยาวขึ้นโดยเริ่มจากบรรทัดนี้
สิ่งนี้ต้องหุ้มอย่างแน่นหนาที่อักขระสูงสุด 72 ตัว อธิบายว่าการเปลี่ยนแปลงแก้ไขปัญหาใดได้บ้าง และอย่างไร แม้ว่านี่จะเป็นทางเลือกเมื่อใช้งานคุณลักษณะใหม่ แต่จะเป็นประโยชน์กับผู้อื่นในภายหลังหากพวกเขาอ้างถึงการเปลี่ยนแปลงนี้ โดยเฉพาะอย่างยิ่งสำหรับการแก้ไขข้อบกพร่อง
รวมหมายเหตุสั้นๆ เกี่ยวกับสมมติฐานหรือข้อมูลเบื้องหลังที่อาจมีความสำคัญเมื่อผู้ร่วมให้ข้อมูลรายอื่นทำงานในคุณลักษณะนี้
รหัสการเปลี่ยนแปลงที่ไม่ซ้ำกัน ชื่อและอีเมลของคุณ ซึ่งระบุไว้ใน repo init
จะถูกเพิ่มในข้อความยืนยันของคุณโดยอัตโนมัติ
นี่คือตัวอย่างข้อความยืนยัน:
Line 1, Headline - a short description Line 3, Body - Add the detailed description of your patch here. Use as many lines as needed. You can write an overall description, then list specifics. I6e3c64e7a:Added a new widget. I60c539a8f:Fixed the spinning image.หากต้องการอ่านบล็อกเกี่ยวกับคำอธิบายที่ดี (พร้อมตัวอย่าง) โปรดดู วิธีเขียนข้อความ Git Commit โดย Chris Beams
กำลังอัปโหลดไปยัง Gerrit
หลังจากที่คุณยอมรับการเปลี่ยนแปลงในประวัติส่วนตัวของคุณแล้ว ให้อัปโหลดไปที่ Gerrit ด้วยคำสั่งนี้:
repo upload
หากคุณเริ่มต้นหลายสาขาในที่เก็บเดียวกัน คุณจะได้รับแจ้งให้เลือกว่าจะอัปโหลดสาขาใด
หลังจากการอัปโหลดสำเร็จ Repo จะให้ URL ของหน้าใหม่ใน Gerrit แก่คุณ คลิกลิงก์ที่ Repo ให้คุณดูแพตช์ของคุณบนเซิร์ฟเวอร์รีวิว เพิ่มความคิดเห็น หรือขอผู้ตรวจสอบเฉพาะสำหรับแพตช์ของคุณ
ขอรับการตรวจทาน
หลังจากที่คุณได้อัปโหลดการเปลี่ยนแปลงของคุณไปยัง Gerrit แล้ว แพทช์จะต้องได้รับการตรวจสอบและอนุมัติโดยเจ้าของรหัสที่เหมาะสม ค้นหาเจ้าของรหัสในไฟล์ OWNERS
หากต้องการค้นหาเจ้าของรหัสที่เหมาะสมและเพิ่มพวกเขาเป็นผู้ตรวจสอบการเปลี่ยนแปลงของคุณ ให้ทำตามขั้นตอนเหล่านี้
เลือกลิงก์ SUGGEST OWNERS ใน Gerrit UI เพื่อดูรายชื่อเจ้าของโค้ดสำหรับไฟล์ในแพตช์ของคุณ
รูปที่ 1 ลิงก์แนะนำเจ้าของใน Gerrit เพิ่มเจ้าของรหัสจากรายการเป็นผู้ตรวจสอบสำหรับโปรแกรมแก้ไขของคุณ
ในการพิจารณาสถานะของไฟล์ในโปรแกรมแก้ไขของคุณ ให้ตรวจสอบไอคอนต่อไปนี้ถัดจากไฟล์ในโปรแกรมแก้ไข
- (ไอคอนเครื่องหมายถูก): อนุมัติโดยเจ้าของรหัส
- (ไอคอนกากบาท): ไม่ได้รับการอนุมัติจากเจ้าของรหัส
- (ไอคอนนาฬิกา): รอการอนุมัติจากเจ้าของรหัส

กำลังอัปโหลดโปรแกรมแก้ไขทดแทน
สมมติว่าผู้ตรวจทานดูแพตช์ของคุณและขอแก้ไขเล็กน้อย คุณสามารถแก้ไขการคอมมิตภายใน Git ได้ ซึ่งส่งผลให้มีแพตช์ใหม่ใน Gerrit ที่มีรหัสการเปลี่ยนแปลงเดียวกันกับต้นฉบับ
git add -A
git commit --amend
เมื่อคุณอัปโหลดแพตช์ที่แก้ไขแล้ว แพตช์นั้นจะแทนที่แพตช์ดั้งเดิมทั้งใน Gerrit และในประวัติ Git ในพื้นที่ของคุณ
การแก้ไขข้อขัดแย้งในการซิงค์
หากแพตช์อื่นๆ ถูกส่งไปยังทรีต้นทางที่ขัดแย้งกับคุณ ให้ทำการรีเบสแพตช์ของคุณที่ด้านบนของ HEAD
ใหม่ของที่เก็บซอร์ส โดยเรียกใช้คำสั่งนี้:
repo sync
คำสั่ง repo sync
ดึงข้อมูลอัพเดตจากเซิร์ฟเวอร์ต้นทาง จากนั้นจะพยายามรีเบส HEAD
ของคุณไปยัง HEAD
ระยะไกลใหม่โดยอัตโนมัติ
หากการรีเบสอัตโนมัติไม่สำเร็จ ให้ทำการรีเบสด้วยตนเอง
repo rebase
เครื่องมืออื่นสำหรับจัดการกับข้อขัดแย้งในการรีเบสคือ git mergetool
เมื่อคุณรวมไฟล์ที่ขัดแย้งกันสำเร็จแล้ว ให้รันคำสั่งนี้:
git rebase --continue
หลังจากการรีเบสแบบอัตโนมัติหรือแบบแมนนวลเสร็จสิ้น ให้รันการ repo upload
เพื่อส่งแพตช์ที่สร้างใหม่ของคุณ
หลังจากส่งได้รับการอนุมัติ
หลังจากที่ส่งผ่านกระบวนการตรวจสอบและยืนยันแล้ว Gerrit จะรวมการเปลี่ยนแปลงลงในที่เก็บข้อมูลสาธารณะโดยอัตโนมัติ ผู้ใช้รายอื่นสามารถเรียกใช้การ repo sync
เพื่อดึงการอัปเดตไปยังไคลเอ็นต์ในพื้นที่ของตน
สำหรับโครงการต้นน้ำ
Android ใช้ประโยชน์จากโครงการโอเพนซอร์สอื่นๆ จำนวนมาก เช่น เคอร์เนล Linux และ WebKit ตามที่อธิบายไว้ใน Android Software Management สำหรับโปรเจ็กต์ส่วนใหญ่ที่อยู่ภายใต้ external/
ให้ทำการเปลี่ยนแปลงอัปสตรีม จากนั้นแจ้งผู้ดูแล Android เกี่ยวกับอัปสตรีมรีลีสใหม่ที่มีการเปลี่ยนแปลงของคุณ
คุณยังอัปโหลดแพตช์ที่ทำให้อัปสตรีมรีลีสใหม่ถูกติดตามได้ด้วย โปรดทราบว่าการเปลี่ยนแปลงเหล่านี้อาจทำได้ยาก หากมีการใช้โปรเจ็กต์อย่างกว้างขวางใน Android เช่นเดียวกับโปรเจ็กต์ที่ใหญ่กว่าส่วนใหญ่ที่กล่าวถึงด้านล่าง ซึ่งมักจะได้รับการอัปเกรดในทุกรุ่น
กรณีพิเศษที่น่าสนใจอย่างหนึ่งคือไบโอนิค โค้ดส่วนใหญ่มาจาก BSD ดังนั้นเว้นแต่ว่าการเปลี่ยนแปลงจะเป็นโค้ดที่ใหม่สำหรับ Bionic โปรดทำการแก้ไขอัปสตรีม จากนั้นดึงไฟล์ใหม่ทั้งหมดจาก BSD ที่เหมาะสม
Android Kernel
ต้องการทำการเปลี่ยนแปลงทั้งหมดต้นน้ำ สำหรับคำแนะนำทั่วไป ให้ปฏิบัติตาม หลักเกณฑ์การสนับสนุนเคอร์เนลของ Android
ไอซียู
ทำการเปลี่ยนแปลงทั้งหมดในโครงการ ICU ที่ external/icu
( icu4c/
และ icu4j/
) บน โฮมเพจ ICU-TC ดูการ ส่งข้อบกพร่องของ ICU และคำขอคุณสมบัติ สำหรับข้อมูลเพิ่มเติม
CLDR
ข้อมูลภาษาศาสตร์ส่วนใหญ่ใน ICU มาจาก โครงการ Unicode CLDR โปรดส่งคำขออัปสตรีมทั้งหมดโดยใช้ คำขอเปลี่ยนแปลง CLDR และเพิ่มป้ายกำกับ "Android"
LLVM/Clang/Compiler-rt
ทำการเปลี่ยนแปลงทั้งหมดกับโปรเจ็กต์ที่เกี่ยวข้องกับ LLVM ( external/clang
, external/compiler-rt
, external/llvm
) บนหน้า LLVM Compiler Infrastructure
mksh
ทำการเปลี่ยนแปลงทั้งหมดกับโครงการ MirBSD Korn Shell ที่ external/mksh
โดยส่งอีเมลไปที่ miros-mksh
บนโดเมน mirbsd.org
(ไม่ต้องสมัครสมาชิกเพื่อส่งที่นั่น) หรือที่ Launchpad
OpenSSL
ทำการเปลี่ยนแปลงทั้งหมดในโปรเจ็กต์ OpenSSL ที่ external/openssl
บน หน้า OpenSSL
V8
ส่งการเปลี่ยนแปลงทั้งหมดในโปรเจ็กต์ V8 ที่ external/v8
ใน หน้าปัญหา V8 ดู การมีส่วนร่วมใน V8 สำหรับรายละเอียด
WebKit
ทำการเปลี่ยนแปลงทั้งหมดกับโปรเจ็กต์ WebKit ที่ external/webkit
บน หน้า WebKit เริ่มกระบวนการโดยแจ้ง ข้อบกพร่องของ WebKit ในจุดบกพร่อง ให้ใช้ Android
สำหรับช่อง แพลตฟอร์ม และ ระบบปฏิบัติการ เฉพาะเมื่อจุดบกพร่องนั้นเจาะจงสำหรับ Android ข้อบกพร่องมักจะได้รับความสนใจจากผู้ตรวจสอบหลังจากเพิ่มการแก้ไขที่เสนอและรวมการทดสอบแล้ว ดู รหัสสนับสนุนไปยัง WebKit สำหรับรายละเอียด
zlib
ทำการเปลี่ยนแปลงทั้งหมดกับโปรเจ็กต์ zlib ที่ external/zlib
บน โฮมเพจ zlib