Halaman ini menjelaskan proses lengkap pengiriman perubahan kode ke Android Open Source Project (AOSP), termasuk cara meminta peninjauan dan melacak perubahan Anda.
AOSP mengandalkan Gerrit, sistem peninjauan kode berbasis web untuk project yang menggunakan Git.
Menandatangani perjanjian lisensi kontributor
Sebelum berkontribusi pada perubahan kode apa pun untuk AOSP, Anda harus membaca Header dan perjanjian lisensi kontributor dan menandatangani salah satu perjanjian berikut:
- Sebagai kontributor perorangan yang memberikan kontribusi hanya atas nama Anda, tanda tangani Perjanjian Lisensi Kontributor Perorangan.
- Sebagai karyawan yang bekerja untuk perusahaan, pastikan perusahaan Anda telah menandatangani Perjanjian Lisensi Kontributor Korporasi yang memberi Anda otorisasi untuk memberikan kontribusi atas namanya.
Memulai cabang
Untuk setiap perubahan kode yang ingin Anda buat, lakukan langkah-langkah berikut:
Mulai cabang baru dalam repositori Git yang relevan. Cabang bukanlah salinan file asli; ini adalah pointer ke commit tertentu, yang membuat pembuatan cabang lokal dan beralih di antara cabang tersebut menjadi operasi ringan. Dengan menggunakan cabang, Anda dapat mengidentifikasi perubahan dari satu cabang ke cabang lainnya. Jalankan perintah ini untuk memulai cabang:
repo start BRANCH_NAME
Anda dapat memulai beberapa cabang independen secara bersamaan di repositori yang sama. Cabang BRANCH_NAME bersifat lokal untuk ruang kerja Anda dan tidak disertakan di Gerrit atau di hierarki sumber akhir. Cabang juga spesifik untuk project yang Anda gunakan, jadi jika perlu mengubah file di project yang berbeda sebagai bagian dari perubahan yang sama, Anda memerlukan cabang di setiap project tempat Anda mengubah file.
(opsional) Pastikan cabang telah dibuat:
repo status .
Anda akan melihat cabang yang baru dibuat. Contoh:
project frameworks/native/ branch mynewbranch
Buat dan uji perubahan Anda
Ikuti langkah-langkah berikut untuk membuat dan menguji perubahan Anda:
Untuk memastikan Anda menggunakan codebase terbaru, lakukan sinkronisasi seluruh codebase:
repo sync
Jika Anda mengalami konflik selama sinkronisasi, lihat langkah 2-4 di Menyelesaikan konflik sinkronisasi.
Temukan kode yang akan diubah. Untuk menemukan kode, sebaiknya gunakan Android Code Search. Anda dapat menggunakan Android Code Search untuk melihat kode sumber AOSP seperti yang ditata saat Anda benar-benar menggunakannya. Untuk informasi selengkapnya, lihat Memulai Penelusuran Kode. Untuk melihat semua kode di cabang
main
dalam penelusuran kode Android, bukahttps://cs.android.com/android/platform/superproject/main
.Ubah atau tambahkan file sumber. Untuk setiap perubahan yang dilakukan:
Tentukan apakah Anda perlu menggunakan flag peluncuran fitur dan, jika ya, terapkan flag tersebut untuk kode baru Anda.
Ikuti praktik terbaik dalam Menyertakan header lisensi.
Untuk kode Java, ikuti gaya kode Java AOSP untuk kontributor.
Beberapa bagian AOSP ditulis dalam Kotlin (
.kt
) dan Anda dapat menggunakan Kotlin di area platform yang sudah ditulis dalam Kotlin. Untuk informasi selengkapnya tentang Kotlin di Android, lihat panduan gaya Kotlin dan panduan interop Kotlin-Java untuk developer Android. Untuk panduan Kotlin yang lebih lengkap, lihat situs bahasa Kotlin.Saat menulis API, ikuti Panduan API Android. Gunakan panduan ini untuk melihat konteks di balik keputusan API Android. Penambahan dan modifikasi API platform divalidasi oleh Metalava.
Menyiapkan dan melakukan commit pada perubahan
commit adalah unit dasar kontrol revisi di Git dan terdiri dari snapshot struktur direktori dan konten file untuk seluruh project. Ikuti langkah-langkah berikut untuk melakukan commit untuk perubahan Anda:
Secara default, Git mendaftar, tetapi tidak melacak perubahan yang Anda buat. Untuk memberi tahu Git agar melacak perubahan, Anda harus menandai atau mem-stage perubahan tersebut untuk disertakan dalam commit. Jalankan perintah ini untuk melakukan staging perubahan:
git add -A
Perintah ini melacak perubahan yang telah Anda buat pada file apa pun.
Ambil file di area staging dan commit atau simpan di database lokal Anda:
git commit -s
Secara default, editor teks akan terbuka dan Anda akan diminta untuk memberikan pesan commit.
Berikan pesan commit dalam format berikut:
Baris 1: Judul. Berikan ringkasan satu baris tentang perubahan tersebut (maksimum 50 karakter). Sebaiknya gunakan awalan untuk mendeskripsikan area yang Anda ubah, diikuti dengan deskripsi perubahan yang Anda buat dalam commit ini, seperti contoh berikut yang berisi perubahan antarmuka pengguna:
ui: Removes deprecated widget
Baris 2: Baris kosong. Ikuti judul dengan baris kosong.
Baris 3: Isi. Berikan deskripsi panjang yang di-hard wrap maksimal 72 karakter. Jelaskan masalah apa yang dapat dipecahkan oleh perubahan tersebut dan bagaimana caranya. Meskipun isi opsional, isi ini akan membantu orang lain yang perlu melihat kembali perubahan tersebut. Pastikan untuk menyertakan catatan singkat tentang asumsi atau informasi latar belakang yang mungkin penting saat kontributor lain mengerjakan fitur ini.
Untuk membaca blog tentang deskripsi commit yang baik (dengan contoh), lihat Cara Menulis Pesan Commit Git.
Simpan commit.
ID perubahan unik serta nama dan email Anda, yang
diberikan selama repo init
, akan otomatis ditambahkan ke pesan commit Anda.
Upload perubahan untuk ditinjau
Setelah Anda melakukan commit pada perubahan ke histori Git pribadi, upload perubahan tersebut ke Gerrit:
Jalankan perintah berikut untuk mengupload semua commit di semua project Anda:
repo upload
Semua perubahan di semua project akan disertakan dalam upload.
Anda akan diminta untuk menjalankan skrip hook.
Tekan a, lalu Enter.
Anda akan diminta untuk menyetujui upload:
Upload project frameworks/native/ to remote branch main: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
Tekan y lalu Enter untuk menyetujui upload.
Anda akan menerima pesan yang mirip dengan remote: SUCCESS
.
Minta peninjauan
Setelah upload berhasil, Repo akan memberi Anda link ke perubahan di Gerrit. Klik link untuk melihat perubahan Anda di server peninjauan, menambahkan komentar, atau meminta peninjau tertentu untuk perubahan Anda. Semua perubahan pada kode harus ditinjau oleh pemilik kode yang sesuai. Untuk meminta peninjauan:
Di Gerrit, klik SUGGEST OWNERS:
Gambar 1. Menyarankan link pemilik di Gerrit.
Dialog peninjau akan muncul. Dialog ini berisi daftar pemilik kode yang dapat meninjau perubahan Anda.
Klik pemilik kode untuk menambahkannya ke ulasan Anda.
Tombol KIRIM diaktifkan.
(Opsional) Ketik alamat email orang lain yang ingin Anda minta untuk meninjau perubahan Anda.
(Opsional) Klik +1 di samping Kirim otomatis untuk mengirimkan perubahan secara otomatis setelah Anda menerima persetujuan. Jika Anda tidak mengklik tombol ini, karyawan Google harus mengirimkan perubahan untuk Anda.
Klik KIRIM untuk mengirim perubahan untuk ditinjau.
Pemilik kode akan meninjau perubahan kode Anda dan memberikan masukan agar Anda dapat menyelesaikan atau menyetujui perubahan tersebut.
Menentukan status perubahan
Untuk menentukan status file dalam perubahan Anda, periksa ikon berikut di samping file dalam perubahan:
- (ikon tanda centang): Disetujui oleh pemilik kode
- (ikon silang): Tidak disetujui oleh pemilik kode
- (ikon jam): Menunggu persetujuan oleh pemilik kode
Gambar berikut menunjukkan ikon status ini yang diterapkan ke file dalam perubahan:
Gambar 2. Contoh file dengan ikon yang menunjukkan persetujuan pemilik kode.
Menyelesaikan masukan dan mengupload perubahan pengganti
Jika peninjau meminta perubahan pada update Anda, Anda dapat mengubah commit dalam Git, yang menghasilkan patchset baru pada perubahan yang sama.
Untuk menyelesaikan masukan dan mengubah perubahan Anda:
Ikuti langkah 2-4 di Membuat dan menguji perubahan.
Jalankan perintah berikut untuk mengubah perubahan Anda:
git add -A git commit --amend
Saat Anda mengupload perubahan yang diubah, perubahan tersebut akan menggantikan perubahan asli di Gerrit dan di histori Git lokal Anda.
Menyelesaikan konflik sinkronisasi
Jika perubahan lain dikirim ke hierarki sumber yang bertentangan dengan perubahan Anda, Anda akan menerima pesan bahwa Anda memiliki konflik. Untuk menyelesaikan konflik:
Pastikan Anda menggunakan kode terbaru:
repo sync .
Perintah
repo sync
mengambil update dari server sumber, lalu mencoba memindahkan basisHEAD
Anda keHEAD
jarak jauh baru secara otomatis.Jika rebase otomatis tidak berhasil, lakukan rebase manual:
repo rebase .
Selesaikan konflik penggabungan. Jika tidak memiliki metode pilihan untuk menyelesaikan konflik penggabungan, Anda dapat menggunakan
git mergetool
untuk memperbaiki konflik antar-file secara manual.Setelah berhasil memperbaiki file yang mengalami konflik, jalankan perintah ini untuk menerapkan commit baru:
git rebase --continue
Kirim perubahan
Setelah pengiriman berhasil melalui proses peninjauan dan verifikasi,
peninjau Google harus mengirimkan kode untuk Anda. Pengguna
lain dapat menjalankan repo sync
untuk menarik update ke klien lokal
masing-masing.
Setelah kiriman digabungkan, Anda dapat membuka dasbor Android Continuous Integration untuk memantau kapan kiriman Anda diintegrasikan ke dalam hierarki.