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:
- Inisialisasi lingkungan build Anda
- Mengunduh sumbernya
- Membuat kata sandi menggunakan pembuat kata sandi.
- Tanda tangani perjanjian lisensi kontributor
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.
-
Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.
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
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 .