Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mengirimkan Patch

Halaman ini menjelaskan proses lengkap pengiriman patch ke Android Open Source Project (AOSP), termasuk cara meminta peninjauan dan melacak perubahan Anda dengan Gerrit .

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 Android Open Source, lihat halaman Peran proyek .
  • Untuk informasi lisensi tentang kontribusi kode ke platform Android, lihat halaman Lisensi .

Untuk kontributor

Mengautentikasi dengan server

Jika Anda berbagi alamat IP dengan pengguna lain, kuota dapat dipicu bahkan untuk pola penggunaan biasa. Ini dapat terjadi ketika, misalnya, banyak pengguna menyinkronkan klien baru dari alamat IP yang sama dalam waktu singkat. Akses terotentikasi menggunakan kuota terpisah untuk setiap pengguna, terlepas dari alamat IP. Untuk membaca tentang mengaktifkan akses terautentikasi, lihat Menggunakan autentikasi .

Memulai cabang Repo

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

repo start NAME .

Anda dapat memulai beberapa cabang independen secara bersamaan di repositori yang sama. NAME cabang lokal ke ruang kerja Anda dan tidak disertakan di Gerrit atau di pohon sumber akhir.

Membuat perubahan Anda

Ubah file sumber, dan validasi perubahan Anda.

Komit perubahan ke repositori lokal Anda dengan perintah ini:

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 awalan untuk menjelaskan area yang Anda ubah, diikuti dengan deskripsi perubahan yang Anda buat di komit ini, seperti yang memiliki ui sebagai awalan:

    ui: Removes deprecated widget

  • Baris 2: Kosong

    Kosongkan baris ini, selalu.

  • Baris 3: Tubuh

    Tulis deskripsi yang lebih panjang, mulai dari baris ini.

    Ini harus hard-wrap maksimal 72 karakter. Jelaskan masalah apa yang dipecahkan oleh perubahan, dan bagaimana caranya. Meskipun ini opsional saat menerapkan fitur baru, akan sangat membantu orang lain nanti jika mereka merujuk pada perubahan ini, terutama untuk debugging.

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

ID perubahan unik dan nama serta 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.
Untuk membaca blog tentang deskripsi commit yang baik (dengan contoh), lihat Cara Menulis Pesan Git Commit oleh Chris Beams.

Mengunggah ke Gerrit

Setelah Anda melakukan perubahan ke riwayat pribadi Anda, unggah ke Gerrit dengan perintah ini:

repo upload

Jika Anda memulai beberapa cabang di repositori yang sama, Anda akan diminta untuk memilih mana yang akan diunggah.

Setelah unggahan berhasil, Repo memberi Anda URL halaman baru di Gerrit . Klik tautan yang diberikan Repo untuk melihat tambalan Anda di server ulasan, menambahkan komentar, atau meminta pengulas khusus untuk tambalan Anda.

Meminta ulasan

Setelah Anda mengunggah perubahan ke Gerrit, tambalan harus ditinjau dan disetujui oleh pemilik kode yang sesuai. Temukan pemilik kode di file OWNERS .

Untuk menemukan pemilik kode yang sesuai dan menambahkannya sebagai peninjau perubahan Anda, ikuti langkah-langkah berikut.

  1. Pilih tautan SARAN PEMILIK di UI Gerrit untuk melihat daftar pemilik kode untuk file di tambalan Anda.

    sarankan tautan pemilik di Gerrit
    Gambar 1. Sarankan tautan pemilik di Gerrit
  2. Tambahkan pemilik kode dari daftar sebagai peninjau patch Anda.

Untuk menentukan status file di patch Anda, periksa ikon berikut di sebelah file di patch.

  • (ikon tanda centang): Disetujui oleh pemilik kode
  • (ikon silang): Tidak disetujui oleh pemilik kode
  • (ikon jam): Menunggu persetujuan oleh pemilik kode
Gambar 2. Contoh file dengan ikon yang menunjukkan status persetujuan pemilik kode

Mengunggah tambalan pengganti

Misalkan seorang pengulas melihat tambalan Anda dan meminta sedikit modifikasi. Anda dapat mengubah komit Anda di dalam Git, yang menghasilkan tambalan baru di Gerrit yang memiliki ID perubahan yang sama dengan aslinya.

git add -A
git commit --amend

Saat Anda mengunggah tambalan yang diubah, itu menggantikan yang asli di Gerrit dan di riwayat Git lokal Anda.

Menyelesaikan konflik sinkronisasi

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

repo sync

Perintah repo sync mengambil pembaruan dari server sumber, kemudian mencoba untuk secara otomatis mengubah basis HEAD Anda ke HEAD jarak jauh yang baru.

Jika rebase otomatis tidak berhasil, lakukan rebase manual.

repo rebase

Alat lain untuk menangani konflik rebase adalah git mergetool . Saat Anda berhasil menggabungkan file yang berkonflik, jalankan perintah ini:

git rebase --continue

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

Setelah pengajuan disetujui

Setelah pengajuan berhasil melalui proses peninjauan dan verifikasi, Gerrit secara otomatis menggabungkan perubahan ke dalam repositori publik. Pengguna lain dapat menjalankan repo sync untuk menarik pembaruan ke klien lokal 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 hulu, lalu beri tahu pengelola Android tentang rilis hulu baru yang berisi perubahan Anda.

Anda juga dapat mengunggah patch yang menyebabkan rilis upstream baru dilacak. Perhatikan bahwa ini bisa menjadi perubahan yang sulit dilakukan jika proyek banyak digunakan di Android, seperti kebanyakan yang lebih besar yang disebutkan di bawah, yang biasanya ditingkatkan dengan setiap rilis.

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

Kernel Android

Lebih suka membuat semua perubahan di hulu. Untuk panduan umum, ikuti Panduan Kontribusi Kernel Android .

ICU4C

Buat semua perubahan pada proyek ICU4C di external/icu4c di Halaman Beranda ICU-TC . Lihat Mengirimkan Bug ICU dan Permintaan Fitur untuk lebih lanjut.

LLVM/Dentang/Compiler-rt

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

mksh

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

OpenSSL

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

V8

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

WebKit

Buat semua perubahan pada proyek WebKit di external/webkit pada halaman WebKit . Mulai proses dengan mengajukan bug WebKit . Dalam bug, gunakan Android untuk bidang Platform dan OS hanya jika bug tersebut khusus untuk Android. Bug jauh lebih mungkin untuk menerima perhatian pengulas setelah perbaikan yang diusulkan ditambahkan dan tes disertakan. Lihat Menyumbangkan Kode ke WebKit untuk detailnya.

zlib

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