Kirim perubahan kode

Halaman ini menjelaskan proses lengkap pengiriman perubahan kode ke Proyek Open Source Android (AOSP), termasuk cara meminta peninjauan dan melacak perubahan.

AOSP mengandalkan Gerrit, yaitu sistem peninjauan kode berbasis web untuk project yang menggunakan Git.

Tanda tangani perjanjian lisensi kontributor

Sebelum memberikan kontribusi perubahan kode apa pun untuk AOSP, Anda harus membaca Perjanjian dan header lisensi kontributor serta menandatangani salah satu perjanjian berikut:

Memulai cabang

Untuk setiap perubahan kode yang ingin Anda buat, lakukan langkah-langkah berikut:

  1. Mulai cabang baru dalam repositori Git yang relevan. Cabang bukanlah salinan dari file asli; cabang adalah pointer ke commit tertentu, yang membuat pembuatan cabang lokal dan beralih di antaranya menjadi operasi ringan. Dengan menggunakan cabang, Anda dapat mengidentifikasi perubahan satu sama lain. 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 dikhususkan untuk project tempat Anda berada, jadi jika perlu mengubah file di project berbeda sebagai bagian dari perubahan yang sama, Anda memerlukan cabang di setiap project tempat Anda mengubah file.

  2. (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:

  1. Untuk memastikan Anda menggunakan codebase terbaru, lakukan sinkronisasi seluruh codebase:

    repo sync
    

    Jika terjadi konflik selama sinkronisasi, lihat langkah 2-4 untuk Menyelesaikan konflik sinkronisasi.

  2. Temukan kode yang akan diubah. Untuk menemukan kode, sebaiknya gunakan Penelusuran Kode Android. Anda dapat menggunakan Android Code Search untuk melihat kode sumber AOSP sebagaimana yang ditata saat Anda benar-benar menggunakannya. Untuk informasi selengkapnya, lihat Mulai menggunakan Penelusuran Kode. Untuk melihat semua kode di cabang main dalam penelusuran kode Android, buka https://cs.android.com/android/platform/superproject/main.

  3. Ubah atau tambahkan file sumber. Untuk setiap perubahan yang dilakukan:

  4. Membuat Android.

  5. Uji build Anda.

Stage dan commit perubahan Anda

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:

  1. Secara {i>default<i}, Git terdaftar tetapi tidak melacak perubahan yang Anda buat. Untuk menginstruksikan Git agar melacak perubahan, Anda harus menandai atau melakukan staging perubahan tersebut untuk disertakan dalam commit. Jalankan perintah ini untuk melakukan stage perubahan:

    git add -A
    

    Perintah ini melacak perubahan yang telah Anda buat pada file apa pun.

  2. 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.

  3. 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 dapat ditulis secara permanen dengan maksimum 72 karakter. Jelaskan masalah apa yang dapat dipecahkan oleh perubahan tersebut dan bagaimana caranya. Meskipun bagian isi bersifat opsional, hal ini berguna bagi 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 saat kontributor lain mengerjakan fitur ini.

    Untuk membaca blog tentang deskripsi commit yang baik (beserta contohnya), lihat Cara Menulis Pesan Git Commit.

  4. 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 meng-commit perubahan ke histori Git pribadi, upload ke Gerrit:

  1. 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.

  2. 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)?
    
  3. Tekan y lalu Enter untuk menyetujui upload.

Anda akan menerima pesan yang mirip dengan remote: SUCCESS.

Meminta tinjauan

Setelah upload berhasil, Repo akan memberi Anda link ke perubahan di Gerrit. Klik link untuk melihat perubahan 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:

  1. Di Gerrit, klik SARANKAN PEMILIK:

    Tautan Sarankan pemilik di Gerrit

    Gambar 1. Link Sarankan pemilik di Gerrit.

    Dialog peninjau akan muncul. Dialog ini berisi daftar pemilik kode yang dapat meninjau perubahan Anda.

  2. Klik pemilik kode untuk menambahkannya ke ulasan Anda.

    Tombol SEND diaktifkan.

  3. (Opsional) Ketik alamat email orang lain yang Anda inginkan untuk meninjau perubahan.

  4. (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.

  5. Klik KIRIM untuk mengirimkan perubahan agar ditinjau.

Pemilik kode meninjau perubahan kode Anda dan memberikan masukan agar Anda dapat menyelesaikan atau menyetujui perubahan.

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 dari pemilik kode

Gambar berikut menampilkan ikon status yang diterapkan ke file dalam perubahan:

Contoh file dengan ikon yang menunjukkan persetujuan pemilik kode

Gambar 2. Contoh file dengan ikon yang menunjukkan persetujuan pemilik kode.

Menyelesaikan masukan dan mengupload perubahan pengganti

Jika peninjau meminta modifikasi pada update, Anda dapat mengubah commit dalam Git, yang menghasilkan patchset baru pada perubahan yang sama.

Untuk menyelesaikan masukan dan mengubah perubahan:

  1. Ikuti langkah 2-4 di Membuat dan menguji perubahan.

  2. Jalankan perintah berikut untuk mengubah perubahan Anda:

    git add -A
    git commit --amend
    
  3. Upload perubahan.

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 dikirimkan ke hierarki sumber yang bertentangan dengan hierarki Anda, Anda akan menerima pesan bahwa Anda mengalami konflik. Untuk menyelesaikan konflik tersebut:

  1. Pastikan Anda menggunakan kode terbaru:

    repo sync .
    

    Perintah repo sync mengambil update dari server sumber, lalu mencoba untuk otomatis me-rebase HEAD ke HEAD jarak jauh yang baru.

  2. Jika rebase otomatis tidak berhasil, lakukan rebase manual:

    repo rebase .
    
  3. Selesaikan konflik penggabungan. Jika tidak memiliki metode pilihan untuk menyelesaikan konflik penggabungan, Anda dapat menggunakan git mergetool untuk memperbaiki konflik antar-file secara manual.

  4. Setelah berhasil memperbaiki file yang mengalami konflik, jalankan perintah ini untuk menerapkan commit baru:

    git rebase --continue
    

Kirim perubahan

Setelah kiriman berhasil melewati proses peninjauan dan verifikasi, peninjau Google harus mengirimkan kode tersebut untuk Anda. Pengguna lain dapat menjalankan repo sync untuk mengambil update ke klien lokal masing-masing.

Setelah pengiriman digabungkan, Anda dapat membuka dasbor Android Continuous Integration untuk memantau kapan pengiriman diintegrasikan ke dalam hierarki.