หน้านี้อธิบายกระบวนการทั้งหมดในการส่งแพตช์ไปยัง Android Open Source Project (AOSP) รวมถึงวิธีขอรับการตรวจสอบและติดตามการเปลี่ยนแปลงของคุณด้วย Gerrit
ข้อกำหนดเบื้องต้น
ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการต่อไปนี้แล้ว:
- เตรียมใช้งานสภาพแวดล้อมบิลด์ของคุณ
- ดาวน์โหลดแหล่งที่มาแล้ว
- สร้างรหัสผ่าน โดยใช้ตัวสร้างรหัสผ่าน
ทรัพยากร
- สำหรับรายละเอียดเกี่ยวกับ Repo และ Git โปรดดูที่หน้า เครื่องมือควบคุมแหล่งที่มา
- สำหรับข้อมูลเกี่ยวกับบทบาทต่างๆ ภายในชุมชน Android Open Source โปรดดูที่หน้า บทบาทของโครงการ
- สำหรับข้อมูลใบอนุญาตเกี่ยวกับการร่วมเขียนโค้ดบนแพลตฟอร์ม Android โปรดดูที่หน้า ใบอนุญาต
สำหรับผู้มีส่วนร่วม
ตรวจสอบสิทธิ์กับเซิร์ฟเวอร์
หากคุณแชร์ที่อยู่ IP กับผู้ใช้รายอื่น โควต้าสามารถถูกกระตุ้นได้แม้จะเป็นรูปแบบการใช้งานปกติก็ตาม กรณีนี้อาจเกิดขึ้นเมื่อผู้ใช้จำนวนมากซิงค์ไคลเอ็นต์ใหม่จากที่อยู่ IP เดียวกันภายในระยะเวลาอันสั้น เป็นต้น การเข้าถึงที่มีการรับรองความถูกต้องจะใช้โควต้าแยกต่างหากสำหรับผู้ใช้แต่ละราย โดยไม่คำนึงถึงที่อยู่ IP หากต้องการอ่านเกี่ยวกับการเปิดใช้งานการเข้าถึงที่มีการตรวจสอบสิทธิ์ โปรดดูที่ การใช้การตรวจสอบสิทธิ์
เริ่มสาขา Repo
สำหรับการเปลี่ยนแปลงแต่ละรายการที่คุณตั้งใจจะทำ ให้เริ่มสาขาใหม่ภายในที่เก็บ Git ที่เกี่ยวข้อง:
repo start NAME .
You can start several independent branches at the same time in the same
repository. The branch NAME
is local to your
workspace and isn't included either on Gerrit or in the final source tree.
Make your change
Modify the source files, and validate your changes.
Commit the changes to your local repository with these commands:
git add -A
git commit -s
เปลี่ยนคำอธิบาย
- บรรทัดที่ 1: พาดหัว
ระบุข้อมูลสรุปหนึ่งบรรทัด ( สูงสุด 50 อักขระ )
Git และ Gerrit ใช้รูปแบบนี้สำหรับการแสดงผลต่างๆ เป็นส่วนที่สำคัญที่สุดและหนาแน่นที่สุดของข้อความยืนยันของคุณ พิจารณาใช้คำนำหน้าเพื่ออธิบายพื้นที่ที่คุณเปลี่ยนแปลง ตามด้วยคำอธิบายการเปลี่ยนแปลงที่คุณทำในการคอมมิตนี้ เช่นอันนี้ที่มี
ui
เป็นคำนำหน้า:ui: Removes deprecated widget
- บรรทัดที่ 2: ว่างเปล่า
ให้บรรทัดนี้ว่างไว้เสมอ
- บรรทัดที่ 3: ร่างกาย
เขียนคำอธิบายที่ยาวขึ้น โดยเริ่มจากบรรทัดนี้
ซึ่งต้องหุ้มด้วยอักขระสูงสุด 72 ตัว อธิบายว่าการเปลี่ยนแปลงนี้สามารถแก้ไขปัญหาใด และทำอย่างไร แม้ว่านี่จะเป็นทางเลือกเมื่อใช้คุณลักษณะใหม่ แต่จะมีประโยชน์มากสำหรับผู้อื่นในภายหลังหากพวกเขาอ้างถึงการเปลี่ยนแปลงนี้ โดยเฉพาะอย่างยิ่งสำหรับการแก้ไขจุดบกพร่อง
รวมข้อความสั้นๆ เกี่ยวกับสมมติฐานหรือข้อมูลความเป็นมาที่อาจมีความสำคัญเมื่อผู้ร่วมให้ข้อมูลรายอื่นใช้งานคุณลักษณะนี้
ID การเปลี่ยนแปลงที่ไม่ซ้ำใคร ชื่อและอีเมลของคุณ ซึ่งระบุไว้ระหว่าง 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.To read a blog about good commit descriptions (with examples), see How to Write a Git Commit Message by Chris Beams.
Sign contributor license agreement
Before you can upload a change to Gerrit, you must sign an Individual Contributor License Agreement. If you work for a corporation, you might also need your coproration to sign a Corporation Contributor License Agreement. For more information on these agreements, including links to each, see Contributor license agreements.
Upload to Gerrit
After you commit your change to your personal history, upload it to Gerrit with this command:
repo upload
If you started multiple branches in the same repository, you're prompted to select which ones to upload.
After a successful upload, Repo provides you with the URL of a new page on Gerrit. Click the link that Repo gives you to view your patch on the review server, add comments, or request specific reviewers for your patch.
Request a review
After you've uploaded your changes to Gerrit, the patch must be reviewed
and approved by the appropriate code owners. Locate code owners in
OWNERS
files.
To find the appropriate code owners and add them as reviewers for your change, follow these steps.
-
Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.
Figure 1. Suggest owners link in Gerrit Add code owners from the list as reviewers for your patch.
To determine the status of the files in your patch, check for the following icons next to the files in the patch.
- (checkmark icon): Approved by code owner
- (cross icon): Not approved by code owner
- (clock icon): Pending approval by code owner

Upload a replacement patch
Suppose a reviewer looked at your patch and requested a small modification. You can amend your commit within Git, which results in a new patch on Gerrit that has the same change ID as the original.
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 สำหรับโปรเจ็กต์ส่วนใหญ่ที่อยู่ภายใต้ external/
ให้ทำการเปลี่ยนแปลงอัปสตรีม จากนั้นแจ้งให้ผู้ดูแล Android ทราบถึงอัปสตรีมรีลีสใหม่ที่มีการเปลี่ยนแปลงของคุณ
คุณยังอาจอัปโหลดแพตช์ที่ทำให้มีการติดตามอัปสตรีมรีลีสใหม่อีกด้วย โปรดทราบว่าสิ่งเหล่านี้อาจเป็นการเปลี่ยนแปลงที่ยากหากโปรเจ็กต์ดังกล่าวมีการใช้งานอย่างแพร่หลายใน Android เช่นเดียวกับโปรเจ็กต์ขนาดใหญ่ส่วนใหญ่ที่กล่าวถึงด้านล่าง ซึ่งโดยปกติแล้วจะได้รับการอัปเกรดในทุกรุ่น
กรณีพิเศษที่น่าสนใจอย่างหนึ่งคือไบโอนิค โค้ดส่วนใหญ่มาจาก BSD ดังนั้น เว้นแต่การเปลี่ยนแปลงจะเป็นโค้ดใหม่สำหรับ Bionic โปรดทำการแก้ไขอัปสตรีม จากนั้นจึงดึงไฟล์ใหม่ทั้งหมดจาก BSD ที่เหมาะสม
เคอร์เนล Android
ทำการเปลี่ยนแปลงทั้งหมดตั้งแต่ต้นทาง สำหรับคำแนะนำทั่วไป โปรดปฏิบัติตาม หลักเกณฑ์การสนับสนุนเคอร์เนลของ Android และหน้า พัฒนาโค้ดเคอร์เนลสำหรับ GKI
ห้องไอซียู
ทำการเปลี่ยนแปลงทั้งหมดในโครงการ ICU ที่โฟลเดอร์ external/icu
( icu4c/
และ icu4j/
) บน หน้าแรกของ ICU-TC ดู การส่งข้อบกพร่องของ ICU และคำขอคุณสมบัติ เพิ่มเติม เพิ่มป้ายกำกับ “android” ให้กับคำขออัปสตรีม Jira ทั้งหมด
ซีแอลดีอาร์
ข้อมูลทางภาษาส่วนใหญ่ใน ICU มาจาก โครงการ Unicode CLDR ส่งคำขอทั้งหมดต้นทางตามการ มีส่วนร่วมกับ CLDR และเพิ่มป้ายกำกับ "android"
LLVM/เสียงดังกราว/คอมไพเลอร์-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 ที่ external/webkit
บน หน้า WebKit เริ่มต้นกระบวนการโดย ยื่นข้อบกพร่องของ WebKit ในข้อบกพร่อง ให้ใช้ Android
สำหรับ ช่องแพลตฟอร์ม และ ระบบปฏิบัติการ เฉพาะในกรณีที่ข้อบกพร่องนั้นเฉพาะกับ Android จุดบกพร่องมีแนวโน้มที่จะได้รับความสนใจจากผู้ตรวจสอบมากขึ้นหลังจากเพิ่มการแก้ไขที่เสนอและรวมการทดสอบแล้ว ดู รหัสที่สนับสนุนให้กับ WebKit สำหรับรายละเอียด
ซลิบ
ทำการเปลี่ยนแปลงทั้งหมดกับโครงการ zlib ที่ external/zlib
บน หน้าแรกของ zlib