Kirim tambalan

Halaman ini menjelaskan proses lengkap pengiriman patch ke Proyek Sumber Terbuka Android (AOSP), termasuk cara meminta peninjauan dan melacak perubahan Anda dengan Gerrit . Gerrit adalah sistem peninjauan kode berbasis web untuk proyek yang menggunakan Git. Gerrit mendorong penggunaan Git yang lebih terpusat dengan mengizinkan semua pengguna yang berwenang untuk mengirimkan perubahan, yang secara otomatis digabungkan jika mereka lulus tinjauan kode. Selain itu, Gerrit memudahkan peninjauan, menampilkan perubahan secara berdampingan di browser dan mengaktifkan komentar sebaris.

Prasyarat

Untuk memulai, pastikan Anda telah melakukan hal berikut:

Sumber daya

  • Untuk detail tentang Repo dan Git, lihat halaman Alat Kontrol Sumber .
  • Untuk informasi tentang berbagai peran dalam komunitas Open Source Android, lihat halaman Peran proyek .
  • Untuk informasi lisensi tentang kontribusi kode ke platform Android, lihat halaman Lisensi .

Konfigurasikan Git

Untuk menggunakan Gerrit, email Anda harus dikaitkan dengan Akun Google yang terdaftar. Jalankan perintah berikut untuk mengonfigurasi Git dengan nama dan alamat email yang terkait dengan Akun Google terdaftar:

git config --global user.name Your Name
git config --global user.email your_email@gmail.com
    

Otentikasi dengan server

Jika Anda berbagi alamat IP dengan pengguna lain, kuota dapat terpicu bahkan untuk pola penggunaan reguler. Hal ini dapat terjadi ketika, misalnya, banyak pengguna menyinkronkan klien baru dari alamat IP yang sama dalam jangka waktu singkat. Akses terautentikasi menggunakan kuota terpisah untuk setiap pengguna, apa pun alamat IP-nya. Untuk membaca tentang mengaktifkan akses terotentikasi, lihat Menggunakan autentikasi .

Mulai cabang Repo

Untuk setiap perubahan yang ingin Anda lakukan, mulai cabang baru dalam repositori Git yang relevan:

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

Ubah deskripsi

  • Baris 1: Judul

    Berikan ringkasan satu baris ( maksimum 50 karakter)

    Format ini digunakan oleh Git dan Gerrit untuk berbagai tampilan. Ini adalah bagian paling penting dan paling padat dari pesan komit Anda. Pertimbangkan untuk menggunakan prefiks untuk mendeskripsikan area yang Anda ubah, diikuti dengan deskripsi perubahan yang Anda buat dalam penerapan ini, misalnya yang memiliki ui sebagai awalan:

    ui: Removes deprecated widget

  • Baris 2: Kosong

    Biarkan baris ini selalu kosong.

  • Baris 3: Tubuh

    Tulis deskripsi yang lebih panjang, dimulai dari baris ini.

    Ini harus dibungkus maksimal 72 karakter. Jelaskan masalah apa yang dapat dipecahkan oleh perubahan tersebut, dan bagaimana caranya. Meskipun ini opsional ketika mengimplementasikan fitur baru, akan sangat membantu orang lain nantinya jika mereka merujuk pada perubahan ini, terutama untuk debugging.

    Sertakan catatan singkat tentang asumsi atau informasi latar belakang apa pun yang mungkin penting ketika kontributor lain mengerjakan fitur ini.

ID perubahan unik serta nama dan email Anda, yang diberikan selama repo init , secara otomatis ditambahkan ke pesan komit Anda.

Berikut ini contoh pesan komit:

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

Saat Anda mengunggah patch yang telah diubah, patch tersebut akan menggantikan patch asli di Gerrit dan riwayat Git lokal Anda.

Selesaikan konflik sinkronisasi

Jika patch lain dikirimkan ke pohon sumber yang bertentangan dengan patch Anda, atur ulang patch Anda di atas HEAD baru dari repositori sumber. Untuk melakukannya, jalankan perintah ini:

repo sync

Perintah repo sync mengambil pembaruan dari server sumber, lalu mencoba mengatur ulang HEAD Anda secara otomatis ke HEAD jarak jauh yang baru.

Jika rebase otomatis tidak berhasil, lakukan rebase manual.

repo rebase

Alat lain untuk mengatasi konflik rebase adalah git mergetool . Ketika Anda berhasil menggabungkan file yang konflik, jalankan perintah ini:

git rebase --continue

Setelah rebase otomatis atau manual selesai, jalankan repo upload untuk mengirimkan patch rebase Anda.

Setelah pengajuan disetujui

Setelah penyerahan berhasil melalui proses peninjauan dan verifikasi, Gerrit secara otomatis menggabungkan perubahan tersebut ke dalam repositori publik. Pengguna lain dapat menjalankan repo sync untuk menarik pembaruan ke klien lokalnya masing-masing.

Untuk proyek hulu

Android memanfaatkan sejumlah proyek sumber terbuka lainnya, seperti kernel Linux dan WebKit, seperti yang dijelaskan dalam Manajemen Perangkat Lunak Android . Untuk sebagian besar proyek yang berada di bawah external/ , buat perubahan di bagian hulu, lalu informasikan kepada pengelola Android tentang rilis hulu baru yang berisi perubahan Anda.

Anda juga dapat mengunggah patch yang menyebabkan rilis upstream baru dapat dilacak. Perhatikan bahwa perubahan ini mungkin sulit dilakukan jika proyek digunakan secara luas di Android, seperti sebagian besar proyek besar yang disebutkan di bawah, yang biasanya ditingkatkan setiap rilis.

Salah satu kasus khusus yang menarik adalah Bionic. Sebagian besar kodenya berasal dari BSD, jadi kecuali perubahannya adalah pada kode yang baru di Bionic, harap lakukan perbaikan upstream, lalu tarik seluruh file baru dari BSD yang sesuai.

Kernel Android

Lakukan semua perubahan di bagian hulu. Untuk panduan umum, ikuti Pedoman Kontribusi Kernel Android dan halaman Kembangkan Kode Kernel untuk GKI .

ICU

Buat semua perubahan pada proyek ICU di external/icu ( folder icu4c/ dan icu4j/ ) di Halaman Beranda ICU-TC . Lihat Mengirimkan Bug ICU dan Permintaan Fitur untuk informasi lebih lanjut. Tambahkan label “android” ke semua permintaan Jira upstream.

CLDR

Sebagian besar data linguistik di ICU berasal dari proyek Unicode CLDR . Kirimkan semua permintaan upstream sesuai dengan Berkontribusi ke CLDR dan tambahkan label “android.”

LLVM/Clang/Compiler-rt

Buat semua perubahan pada proyek terkait LLVM ( external/clang , external/compiler-rt , external/llvm ) di halaman Infrastruktur Kompiler LLVM .

mksh

Buat semua perubahan pada proyek MirBSD Korn Shell di external/mksh dengan mengirimkan email ke miros-mksh di domain mirbsd.org (tidak perlu berlangganan untuk mengirimkannya ke sana) atau di Launchpad .

OpenSSL

Lakukan semua perubahan pada proyek OpenSSL di external/openssl di halaman OpenSSL .

V8

Kirimkan semua perubahan pada proyek V8 di external/v8 pada halaman masalah V8 . Lihat Berkontribusi pada V8 untuk detailnya.

WebKit

Buat semua perubahan pada proyek WebKit di external/webkit di halaman WebKit . Mulai proses dengan melaporkan bug WebKit . Pada bug, gunakan Android untuk bidang Platform dan OS hanya jika bug tersebut khusus untuk Android. Bug jauh lebih mungkin mendapat perhatian pengulas setelah usulan perbaikan ditambahkan dan pengujian disertakan. Lihat Menyumbang Kode ke WebKit untuk detailnya.

zlib

Buat semua perubahan pada proyek zlib di external/zlib di halaman beranda zlib .