Halaman ini menjelaskan proses lengkap pengiriman perubahan kode ke Android Proyek Open Source (AOSP), termasuk cara meminta peninjauan dan pelacakan perubahan Anda.
AOSP mengandalkan Gerrit, yaitu sistem peninjauan kode berbasis web untuk project yang menggunakan Git.
Tanda tangani perjanjian lisensi kontributor
Sebelum berkontribusi pada perubahan kode apa pun untuk AOSP, Anda harus membaca Header dan perjanjian lisensi kontributor dan tanda tangani salah satu perjanjian berikut:
- Sebagai kontributor perorangan yang memberikan kontribusi hanya atas nama Anda, tanda tangani tindakan Perjanjian Lisensi Kontributor Perorangan.
- Sebagai karyawan yang bekerja di perusahaan, pastikan perusahaan Anda telah menandatangani Perjanjian Lisensi Kontributor Perusahaan otorisasi untuk memberikan kontribusi kepada Anda.
Memulai cabang
Untuk setiap perubahan kode yang ingin Anda buat, lakukan langkah-langkah berikut:
Mulai cabang baru dalam repositori Git yang relevan. Cabang bukan salinan file asli; itu adalah pointer ke commit tertentu, yang membuat membuat cabang lokal dan mengalihkan di antara mereka dengan operasi ringan. Menurut menggunakan cabang, Anda dapat mengidentifikasi perubahan satu sama lain. Jalankan perintah ini untuk mulai membuat cabang:
repo start BRANCH_NAME
Anda dapat memulai beberapa cabang independen secara bersamaan repositori resource. Cabang BRANCH_NAME bersifat lokal untuk {i>workspace<i} dan tidak disertakan baik di Gerrit maupun di hierarki sumber akhir. Cabang juga spesifik untuk proyek tempat Anda berada, jadi jika Anda perlu mengubah file dalam project yang berbeda sebagai bagian dari perubahan yang sama, Anda memerlukan cabang di setiap proyek di mana Anda mengubah file.
(Opsional) Pastikan bahwa 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:
Untuk memastikan Anda bekerja dengan codebase terbaru, lakukan sinkronisasi seluruh codebase:
repo sync
Jika terjadi konflik saat sinkronisasi, lihat langkah 2-4 dari Selesaikan konflik sinkronisasi.
Temukan kode yang akan diubah. Untuk menemukan kode, pertimbangkan untuk menggunakan Penelusuran Kode Android. Anda dapat menggunakan Android Penelusuran Kode untuk melihat kode sumber AOSP seperti yang sudah ditata saat Anda benar-benar menggunakan anotasi. Untuk informasi selengkapnya, lihat Memulai Code Search. 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:
- Ikuti praktik terbaik dalam Sertakan 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 developer Android Panduan gaya Kotlin dan Panduan interop Kotlin-Java. 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 Logam.
Stage dan commit perubahan Anda
commit adalah unit dasar kontrol revisi di Git dan terdiri dari {i>snapshot<i} dari struktur direktori dan konten file untuk seluruh proyek. Ikuti langkah-langkah berikut untuk melakukan commit untuk perubahan Anda:
Secara {i>default<i}, Git terdaftar tetapi tidak melacak perubahan yang Anda buat. Kepada menginstruksikan Git untuk melacak perubahan, Anda harus menandai atau melakukan staging perubahan itu untuk untuk disertakan ke dalam commit. Jalankan perintah ini untuk melakukan stage perubahan:
git add -A
Perintah ini melacak perubahan yang telah Anda buat pada file apa pun.
Mengambil file di area staging dan commit atau menyimpannya di {i>database<i}:
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 (50 karakter maksimum). Pertimbangkan untuk menggunakan awalan untuk mendeskripsikan area yang Anda ubah, yang diikuti oleh deskripsi perubahan yang Anda buat dalam commit ini, seperti contoh 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 terdiri dari 72 karakter sebagai hard-wrapping maksimum. Jelaskan masalah apa yang dapat dipecahkan oleh perubahan tersebut dan bagaimana caranya. Meskipun tubuh opsional, hal ini membantu orang lain yang perlu merujuk kembali ke perubahan tersebut. Pastikan untuk menyertakan catatan singkat tentang asumsi atau informasi latar belakang apa pun yang mungkin penting ketika kontributor lain mengerjakan fitur ini.
Untuk membaca blog tentang deskripsi commit yang baik (dengan contoh), lihat Cara Menulis Pesan Git Commit.
Simpan commit.
ID perubahan unik serta nama dan email Anda, yang
yang disediakan selama repo init
, akan otomatis ditambahkan ke pesan commit Anda.
Upload perubahan untuk ditinjau
Setelah Anda meng-commit perubahan ke histori Git pribadi, upload ke Gerrit:
Jalankan perintah berikut untuk mengupload semua commit Anda di semua project:
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 Anda di Gerrit. Klik tautan untuk melihat perubahan Anda di server tinjauan, 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 SARANKAN PEMILIK:
Gambar 1. Link Sarankan 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 SEND diaktifkan.
(Opsional) Ketik alamat email orang lain yang ingin Anda tinjau berubah.
(Opsional) Klik +1 di samping Kirim otomatis untuk mengirim perubahan secara otomatis setelah Anda menerima persetujuan. Jika Anda tidak mengklik tombol ini, seorang karyawan Google harus mengirimkan perubahan untuk Anda.
Klik KIRIM untuk mengirimkan perubahan agar ditinjau.
Pemilik kode meninjau perubahan kode Anda dan memberikan masukan untuk Anda menyelesaikan atau menyetujui perubahan.
Menentukan status perubahan
Untuk menentukan status file dalam perubahan Anda, periksa ikon berikut di samping file dalam perubahan:
- (tanda centang ikon): Disetujui oleh pemilik kode
- (ikon silang): Tidak disetujui oleh pemilik kode
- (jam ikon): Menunggu persetujuan dari pemilik kode
Gambar berikut menampilkan ikon status 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 modifikasi pada pembaruan, Anda dapat mengubah commit Anda di dalam Git, yang menghasilkan patchset baru pada berubah.
Untuk menyelesaikan masukan dan mengubah perubahan:
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 telah diubah, perubahan tersebut akan menggantikan yang asli di Gerrit dan di histori Git lokal Anda.
Menyelesaikan konflik sinkronisasi
Jika perubahan lain yang dikirimkan ke hierarki sumber yang bertentangan dengan milik Anda, Anda akan menerima pesan bahwa Anda memiliki konflik. Untuk menyelesaikan konflik tersebut:
Pastikan Anda menggunakan kode terbaru:
repo sync .
Perintah
repo sync
mengambil update dari server sumber, lalu mencoba melakukan rebaseHEAD
secara otomatis keHEAD
jarak jauh baru.Jika rebase otomatis tidak berhasil, lakukan rebase manual:
repo rebase .
Selesaikan konflik penggabungan. Jika Anda tidak memiliki metode pilihan untuk menyelesaikan konflik penggabungan, Anda bisa gunakan
git mergetool
untuk memperbaiki konflik antarfile secara manual.Setelah Anda berhasil memperbaiki file yang konflik, jalankan perintah ini untuk terapkan commit baru:
git rebase --continue
Kirim perubahan
Setelah kiriman masuk melalui
proses peninjauan dan verifikasi,
peninjau Google harus mengirimkan kode tersebut untuk Anda. Yang lain
pengguna dapat menjalankan repo sync
untuk mengambil update ke lokal mereka
dengan klien besar.
Setelah kiriman digabungkan, Anda dapat mengunjungi Continuous Integration Android dasbor untuk memantau kapan kiriman Anda diintegrasikan ke dalam pohon.