ส่งแพตช์

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

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

ทรัพยากร

  • สำหรับรายละเอียดเกี่ยวกับ Repo และ Git โปรดดูที่หน้า Source Control Tools
  • สำหรับข้อมูลเกี่ยวกับบทบาทต่างๆ ภายในชุมชนโอเพ่นซอร์ส 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 อักขระ อธิบายว่าการเปลี่ยนแปลงแก้ปัญหาใดได้บ้าง และอย่างไร แม้ว่าสิ่งนี้จะเป็นทางเลือกเมื่อนำคุณลักษณะใหม่ไปใช้ แต่จะมีประโยชน์มากสำหรับผู้อื่นในภายหลังหากพวกเขาอ้างถึงการเปลี่ยนแปลงนี้ โดยเฉพาะอย่างยิ่งสำหรับการดีบัก

    ใส่หมายเหตุสั้นๆ ของสมมติฐานหรือข้อมูลเบื้องหลังที่อาจมีความสำคัญเมื่อผู้ร่วมให้ข้อมูลรายอื่นทำงานในคุณลักษณะนี้

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.
หากต้องการอ่านบล็อกเกี่ยวกับคำอธิบายการคอมมิตที่ดี (พร้อมตัวอย่าง) โปรดดู วิธีเขียนข้อความคอมมิต Git โดย Chris Beams

กำลังอัปโหลดไปยัง Gerrit

หลังจากที่คุณยอมรับการเปลี่ยนแปลงในประวัติส่วนตัวของคุณแล้ว ให้อัปโหลดไปยัง Gerrit ด้วยคำสั่งนี้:

repo upload

หากคุณเริ่มต้นหลายสาขาในที่เก็บเดียวกัน คุณจะได้รับพร้อมท์ให้เลือกสาขาที่จะอัปโหลด

หลังจากอัปโหลดสำเร็จ Repo จะให้ URL ของหน้าใหม่บน Gerrit แก่คุณ คลิกลิงก์ที่ Repo มอบให้คุณเพื่อดูแพตช์ของคุณบนเซิร์ฟเวอร์ตรวจสอบ เพิ่มความคิดเห็น หรือขอผู้ตรวจสอบเฉพาะสำหรับแพตช์ของคุณ

ขอรีวิว

หลังจากที่คุณอัปโหลดการเปลี่ยนแปลงไปยัง Gerrit แล้ว โปรแกรมแก้ไขจะต้องได้รับการตรวจสอบและอนุมัติโดยเจ้าของรหัสที่เหมาะสม ค้นหาเจ้าของรหัสในไฟล์ OWNERS

หากต้องการค้นหาเจ้าของรหัสที่เหมาะสมและเพิ่มเป็นผู้ตรวจสอบการเปลี่ยนแปลงของคุณ ให้ทำตามขั้นตอนเหล่านี้

  1. เลือกลิงก์ SUGGEST OWNERS ใน Gerrit UI เพื่อดูรายชื่อเจ้าของโค้ดสำหรับไฟล์ในแพตช์ของคุณ

    แนะนำเจ้าของลิงค์ใน Gerrit
    รูปที่ 1 แนะนำเจ้าของลิงค์ใน Gerrit
  2. เพิ่มเจ้าของโค้ดจากรายการเป็นผู้ตรวจทานแพตช์ของคุณ

หากต้องการทราบสถานะของไฟล์ในแพตช์ของคุณ ให้ตรวจหาไอคอนต่อไปนี้ถัดจากไฟล์ในแพตช์

  • (ไอคอนเครื่องหมายถูก): อนุมัติโดยเจ้าของรหัส
  • (ไอคอนกากบาท): ไม่ได้รับการอนุมัติจากเจ้าของรหัส
  • (ไอคอนนาฬิกา): รอการอนุมัติจากเจ้าของโค้ด
รูปที่ 2 ตัวอย่างไฟล์ที่มีไอคอนแสดงสถานะการอนุมัติของเจ้าของรหัส

กำลังอัปโหลดแพตช์ทดแทน

สมมติว่าผู้ตรวจสอบดูแพตช์ของคุณและขอแก้ไขเล็กน้อย คุณสามารถแก้ไขการคอมมิตของคุณภายใน Git ซึ่งจะส่งผลให้มีแพตช์ใหม่บน Gerrit ที่มี ID การเปลี่ยนแปลงเหมือนกับต้นฉบับ

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 เช่นเดียวกับโครงการขนาดใหญ่ส่วนใหญ่ที่กล่าวถึงด้านล่าง ซึ่งมักจะได้รับการอัปเกรดในทุกรุ่น

กรณีพิเศษที่น่าสนใจอย่างหนึ่งคือ Bionic โค้ดส่วนใหญ่มาจาก BSD ดังนั้น เว้นแต่การเปลี่ยนแปลงเป็นโค้ดใหม่สำหรับ Bionic โปรดทำการแก้ไขอัปสตรีม แล้วจึงดึงไฟล์ใหม่ทั้งหมดจาก BSD ที่เหมาะสม

เคอร์เนล Android

ทำการเปลี่ยนแปลงทั้งหมดตั้งแต่ต้นน้ำ สำหรับคำแนะนำทั่วไป ให้ทำตาม แนวทางการสนับสนุนเคอร์เนลของ Android และหน้า พัฒนารหัสเคอร์เนลสำหรับ GKI

ห้องไอซียู

ทำการเปลี่ยนแปลงทั้งหมดในโครงการ ICU ที่โฟลเดอร์ external/icu (โฟลเดอร์ icu4c/ และ icu4j/ ) ใน หน้าแรกของ ICU-TC ดู การส่งข้อบกพร่องของ ICU และคำขอคุณสมบัติ เพิ่มเติม

ซีแอลดีอาร์

ข้อมูลภาษาส่วนใหญ่ใน ICU มาจาก โครงการ Unicode CLDR โปรดส่งคำขอทั้งหมดขึ้นไปโดยใช้ คำขอ CLDR Change และเพิ่มป้ายกำกับ 'Android'

LLVM/เสียงดังกราว/คอมไพเลอร์-rt

ทำการเปลี่ยนแปลงทั้งหมดในโครงการที่เกี่ยวข้องกับ LLVM ( external/clang , external/compiler-rt , external/llvm ) ใน หน้า LLVM Compiler Infrastructure

มช

ทำการเปลี่ยนแปลงทั้งหมดกับโครงการ 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 สำหรับช่อง Platform และ OS เฉพาะในกรณีที่จุดบกพร่องนั้นเฉพาะกับ Android ข้อบกพร่องมีแนวโน้มที่จะได้รับความสนใจจากผู้ตรวจสอบมากขึ้นหลังจากเพิ่มการแก้ไขที่เสนอและรวมการทดสอบแล้ว ดู รหัสที่สนับสนุน WebKit สำหรับรายละเอียด

ซลิบ

ทำการเปลี่ยนแปลงทั้งหมดกับโปรเจ็กต์ zlib ที่ external/zlib บน โฮมเพจ zlib