ส่งแพทช์

หน้านี้อธิบายกระบวนการทั้งหมดในการส่งแพตช์ไปยัง Android Open Source Project (AOSP) รวมถึงวิธีขอรับการตรวจสอบและติดตามการเปลี่ยนแปลงของคุณด้วย Gerrit

ข้อกำหนดเบื้องต้น

ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการต่อไปนี้แล้ว:

ทรัพยากร

ตรวจสอบสิทธิ์กับเซิร์ฟเวอร์

หากคุณแชร์ที่อยู่ 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 test your changes.

For any changes made, follow License header best practices.

Commit your change

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.

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.

  1. Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.

    suggest owners link in Gerrit
    Figure 1. Suggest owners link in Gerrit
  2. 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
Figure 2. Example of files with icons showing code owner approval status

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