Kirim perubahan kode

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:

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

  2. (opsional) Pastikan cabang telah dibuat:

    repo status .
    

    Anda akan melihat cabang yang baru dibuat. Contoh:

    project frameworks/native/                      branch mynewbranch
    

Membuat dan menguji perubahan

Ikuti langkah-langkah berikut untuk membuat dan menguji perubahan Anda:

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

  2. 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, buka https://cs.android.com/android/platform/superproject/main.

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

  4. Mem-build Android.

  5. Uji build Anda.

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 perubahan:

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

  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). Pertimbangkan untuk menggunakan awalan untuk menjelaskan 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 yang dipecahkan oleh perubahan tersebut dan 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.

  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 melakukan commit pada perubahan ke histori Git pribadi, upload perubahan tersebut ke Gerrit:

  1. Jalankan perintah berikut untuk mengupload semua commit di semua project Anda:

    repo upload
    

    Semua perubahan di semua project 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.

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:

  1. Di Gerrit, klik SUGGEST OWNERS:

    Menyarankan link pemilik di Gerrit

    Gambar 1. Menyarankan link 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 KIRIM diaktifkan.

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

  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 mengirim perubahan untuk ditinjau.

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

Menentukan status perubahan

Untuk menentukan status file dalam perubahan, 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:

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 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:

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

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:

  1. Pastikan Anda menggunakan kode terbaru:

    repo sync .
    

    Perintah repo sync mengambil update dari server sumber, lalu mencoba memindahkan basis HEAD Anda ke HEAD jarak jauh baru secara otomatis.

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

    repo rebase .
    
  3. Menyelesaikan 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 bentrok, 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.