全部产品
Search
文档中心

Alibaba Cloud DevOps:Mode ulasan push

更新时间:Jun 29, 2025

Mode ulasan push menyederhanakan alur kerja git push dengan secara otomatis membuat dan mengelola ulasan kode tanpa memerlukan alat tambahan. Mode ini meningkatkan kualitas kode serta efisiensi kolaborasi.

Latar Belakang

Mode AGit-Flow di Codeup mendukung pembuatan ulasan kode melalui baris perintah menggunakan git pr. Dalam mode ini, pengembang diharuskan menginstal alat git-repo secara lokal.

Namun, sebagian besar pengembang ingin menggabungkan kode yang disetujui ke cabang target tanpa menggunakan alat tambahan. Untuk mencapai hal ini, Codeup memperkenalkan mode ulasan push, yang memungkinkan pengembang membuat ulasan kode hanya dengan mengeksekusi git push, tanpa perlu alat eksternal seperti git-repo.

Mode ulasan push dan keuntungannya

Mode ulasan push adalah metode kolaborasi baru yang diperkenalkan oleh Codeup untuk memberikan pengalaman ulasan kode yang lebih segar dan efisien kepada pengguna:

  • Pengembang tidak lagi perlu membuat cabang baru atau beralih ke browser untuk memulai ulasan setelah menyelesaikan pengembangan. Cukup jalankan git push untuk memulai ulasan.

  • Administrator cukup mengatur sistem agar secara otomatis membuat ulasan kode saat pengembang melakukan push kode ke repositori. Proses ini memastikan kualitas kode melalui mekanisme ulasan.

Tabel berikut membandingkan mode ulasan push dengan mode cabang yang ada.

Mode Pengembangan Cabang

Mode Ulasan Push

Mengirim Kode

Kode dikirim ke cabang fitur.

Kode langsung dikirim ke cabang utama.

Memulai Ulasan Kode

Ulasan kode dimulai di halaman web Codeup.

Jalankan git push.

Memperbarui Ulasan Kode

Cabang fitur diperbarui.

Tetap jalankan git push.

Izin untuk Berkontribusi Kode

Pengembang atau peran level lebih tinggi

Peninjau atau peran level lebih tinggi

Kualitas Kode

Kontrol kualitas kode hanya pada cabang-cabang yang dilindungi.

Kontrol kualitas kode pada semua cabang.

Setelah mengaktifkan mode ulasan push dalam pengaturan repositori, mode ini menawarkan beberapa keuntungan sebagai berikut:

  • Untuk berkontribusi kode ke repositori dan memulai ulasan kode, Anda tidak perlu membuat cabang baru. Anda dapat melakukan perubahan dan mengirimkannya langsung ke cabang utama, sehingga menghindari overhead manajemen cabang yang berlebihan.

  • git push tidak lagi langsung mengirimkan konten cabang tetapi membuat atau memperbarui ulasan kode.

  • Jika kode perlu dimodifikasi, setelah melakukan commit, Anda dapat terus menjalankan git push, dan ulasan yang telah dimulai akan diperbarui secara otomatis.

  • Berkontribusi kode ke repositori tidak lagi memerlukan izin pengembang. Dengan izin peninjau pada repositori, Anda dapat berkontribusi kode, dan kode yang disumbangkan perlu ditinjau sebelum resmi digabungkan ke dalam basis kode. Oleh karena itu, izin tulis langsung pada repositori dapat dibatasi untuk beberapa administrator saja, sementara sebagian besar pengembang hanya membutuhkan izin baca, mengurangi risiko modifikasi tidak disengaja pada basis kode.

  • Mode ini memungkinkan Anda menentukan opsi push untuk mengontrol perilaku push tertentu. Untuk informasi lebih lanjut, lihat bagian Gunakan mode ulasan push untuk kolaborasi.

Cara mengaktifkan mode ulasan push

Di Repository Settings > Push Rule Settings, Anda dapat melihat saklar untuk mode ulasan push. Klik saklar ini untuk mengaktifkan atau menonaktifkan mode ulasan push.

image

Penting

Setelah mengaktifkan mode ulasan push, perilaku git push akan berubah. Pastikan Anda mengetahui perubahan berikut sebelum mengaktifkan mode ulasan push:

  • Setelah mengaktifkan mode ulasan push, menjalankan git push tidak lagi langsung memperbarui kode jarak jauh (bahkan dengan izin pengembang pada repositori). Sebagai gantinya, ulasan kode dibuat atau diperbarui secara otomatis.

  • Peninjau repositori dapat memulai ulasan melalui git push, namun yakinlah bahwa kode belum digabungkan ke dalam cabang. Kode harus digabungkan secara manual setelah memenuhi persyaratan ulasan dan penggabungan cabang.

  • Karena git push tidak langsung memperbarui kode tetapi membuat ulasan, ini tidak akan memicu webhook acara push.

  • Pengguna dapat membuat, mengedit, atau menghapus file melalui proses ulasan di halaman web Codeup.

Gunakan mode ulasan push untuk kolaborasi

Bagian ini menjelaskan cara menggunakan mode ulasan push untuk kolaborasi pengembangan melalui contoh praktis.

Pembuatan ulasan otomatis

Misalkan Anda menerima tugas pengembangan. Anda dapat menggunakan mode ulasan push untuk menyederhanakan proses menjadi dua langkah:

  1. Kembangkan di cabang utama.

  2. Jalankan git push.

Mari kita lihat lebih dekat.

  1. Kembangkan di cabang utama repositori sampel dan lakukan commit 27e76f58.

    $ git log
    commit 27e76f582ca7207a695dd8762b66ef443adcc572 (HEAD -> master)
    Author: Codeup User <codeup.user@example.com>
    Date:   Tue Oct 11 10:16:18 2022 +0800
    
        feat: fitur baru
    
        Signed-off-by: Codeup User <codeup.user@example.com>
    
    commit 44094ec92eb122deab5a0367552bd081540c4353 (origin/master, origin/HEAD)
    Author: Codeup User <codeup.user@example.com>
    Date:   Tue Oct 11 10:09:39 2022 +0800
    
        Commit awal
  2. Kemudian, kirimkan perubahan ke repositori jarak jauh dengan menjalankan git push:

    $ git push
    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Compressing objects using 12 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 310 bytes | 310.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    remote: +-----------------------------------------------------------------------------------+
    remote: | The following tips are provided by Codeup:                                        |
    remote: +-----------------------------------------------------------------------------------+
    remote: | Merge request #31620 has been created, please visit:                              |
    remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
    remote: +-----------------------------------------------------------------------------------+
    To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
     * [new reference]         master -> refs/merge-requests/31620/head

Setelah mengaktifkan mode ulasan push, git push tidak langsung memperbarui kode jarak jauh tetapi membuat ulasan kode dengan ID 31620. Sumber ulasan kode ini adalah commit lokal terbaru, dan tujuannya adalah cabang saat ini. Hal ini dapat dikonfirmasi melalui detail ulasan kode.

高的 (55)

Melalui metode ini, Anda tidak lagi perlu membuat cabang fitur atau beralih ke browser untuk membuat ulasan, sangat menyederhanakan alur kerja. Selain itu, git push harus melewati ulasan sebelum dapat digabungkan, memastikan kualitas kode.

Pembaruan ulasan otomatis

Selama proses ulasan kode, sering kali perlu mengubah kode berulang kali berdasarkan komentar peninjau sebelum kode dapat memenuhi kriteria penerimaan. Jadi, setelah kode dimodifikasi, bagaimana ulasan kode yang sesuai diperbarui? Bagian berikut memperkenalkan cara menggunakan git push untuk secara otomatis memperbarui ulasan.

Pertama, berdasarkan 27e76f58, ubah beberapa kode sesuai dengan komentar ulasan dan lakukan commit e00db452.

$ git log
commit e00db4522f2d6ca5b42377ca76c7b3a7e12db8a5 (HEAD -> master)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 11:09:42 2022 +0800

    feat: perbaiki komentar

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 27e76f582ca7207a695dd8762b66ef443adcc572
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:16:18 2022 +0800

    feat: fitur baru

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 44094ec92eb122deab5a0367552bd081540c4353 (origin/master, origin/HEAD)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:09:39 2022 +0800

    Commit awal

Kemudian, setelah menjalankan git push, sistem secara otomatis memperbarui status ulasan kode dan menampilkan informasi prompt yang relevan.

$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects using 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 340 bytes | 340.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31620 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   27e76f582c..e00db4522f  master -> refs/merge-requests/31620/head

Menurut informasi prompt, push ini memperbarui ulasan kode dengan ID 31620. Setelah memeriksa detail ulasan, Anda dapat melihat bahwa versi sumber ulasan kode telah berubah menjadi e00db4522, dan jumlah commit telah berubah menjadi 2. Jika kode masih perlu dimodifikasi, cukup ulangi proses sebelumnya.

Buat ulasan baru

Ketika Anda menjalankan perintah git push berulang kali, itu akan secara otomatis memperbarui ulasan yang ada. Jika Anda tidak ingin memperbarui ulasan tetapi ingin membuat yang baru, tambahkan opsi push ke perintah push. Secara spesifik, menjalankan git push -o review=new akan membuat ulasan kode baru.

Setelah melakukan beberapa perubahan kode lokal, jalankan git push -o review=new. Kemudian, ulasan kode dengan ID 31626 berhasil dibuat.

$ git push -o review=new
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects using 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 361 bytes | 361.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31626 has been created, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 * [new reference]         master -> refs/merge-requests/31626/head

Catatan: Jika sudah ada ulasan yang berisi perubahan yang sama persis dengan yang ada dalam push Anda saat ini, Anda tidak dapat membuat ulasan baru.

$ git push -o review=new
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request create failed. There exists a same merge request in progress:       |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (create MR failed)
error: Failed to push some references to 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

Perbarui ulasan tertentu

Ketika ada beberapa ulasan kode terbuka, menjalankan git push akan gagal karena tidak dapat menentukan ulasan mana yang ingin Anda perbarui.

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects using 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: +-------------------------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                                      |
remote: +-------------------------------------------------------------------------------------------------+
remote: | You need to manually specify the merge request to update because there are already              |
remote: | multiple merge requests that you created earlier for the same target branch:                    |
remote: |                                                                                                 |
remote: | * [ID: 31626] https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: | * [ID: 31620] https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: |                                                                                                 |
remote: | Then, update specific merge request based on it's ID (MR-ID):                                   |
remote: |     git push -o review=<MR-ID>                                                                  |
remote: |                                                                                                 |
remote: | Or you can create a new one:                                                                    |
remote: |     git push -o review=new                                                                      |
remote: +-------------------------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (unable to determine which mr to update)
error: Failed to push some references to 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

Informasi prompt menunjukkan bahwa ada dua ulasan untuk cabang target yang sama, dengan ID 31626 dan 31620. Oleh karena itu, sistem tidak dapat menentukan ulasan mana yang ingin Anda perbarui. Ada dua solusi untuk masalah ini:

  • Gunakan -o review=new untuk membuat ulasan kode baru.

  • Gunakan -o review=<MR-ID> untuk menentukan ID ulasan yang ingin diperbarui.

Metode pertama sudah didemonstrasikan di bagian Buat Ulasan Baru. Mari kita lihat cara memperbarui ulasan tertentu.

Misalkan kita ingin memperbarui ulasan dengan ID 31626. Perintahnya adalah git push -o review=31626.

$ git push -o review=31626
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects using 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 303 bytes | 303.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31626 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   0ba010f2ff..037578c634  master -> refs/merge-requests/31626/head

Dengan cara ini, kita telah memperbarui ulasan kode dengan ID 31626.

Selesaikan konflik pembaruan ulasan

Ketika Anda ingin memperbarui ulasan kode, Anda mungkin menemukan bahwa ulasan tersebut sudah diperbarui oleh pengguna lain. Dalam hal ini, sistem mencegah pembaruan Anda agar tidak terjadi untuk menghindari menimpa perubahan yang dibuat oleh pengguna. Misalkan kita ingin memperbarui ulasan 31644. Jalankan perintah git push -o review=31644.

$ git push -o review=31644
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects using 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 326 bytes | 326.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +--------------------------------------------+
remote: | The following tips are provided by Codeup: |
remote: +--------------------------------------------+
remote: | MR is diverged with this push              |
remote: +--------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (MR is diverged with this push)
error: Failed to push some references to 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

Informasi prompt menunjukkan bahwa push ini akan menyebabkan konflik dalam ulasan, mengakibatkan kegagalan pembaruan. Ada dua opsi untuk menangani masalah ini:

  • Tarik pembaruan dari pengguna lain, selesaikan konflik secara lokal, lalu perbarui ulasan.

  • Perbarui ulasan secara paksa.

Ambil metode pertama sebagai contoh.

Pertama, jalankan git fetch origin refs/merge-requests/<mr-id>/head. Untuk contoh ini, ganti mr-id dengan 31644. Akibatnya, perintah yang harus dijalankan adalah git fetch origin refs/merge-requests/31644/head.

$ git fetch origin refs/merge-requests/31644/head
From https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo
 * branch                  refs/merge-requests/31644/head -> FETCH_HEAD

Kemudian, rebase perubahan lokal Anda ke referensi yang sesuai dengan ulasan. Jalankan git rebase FETCH_HEAD. Operasi rebase mungkin menghadapi konflik. Selesaikan konflik sesuai dengan situasi spesifik Anda.

$ git rebase FETCH_HEAD
Successfully rebased and updated refs/heads/master.

Sekarang, repositori lokal Anda memiliki kode jarak jauh. Jalankan push lagi.

$ git push -o review=31644
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects using 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 331 bytes | 331.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31644 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   a4a2cad45c..8da076fb44  master -> refs/merge-requests/31644/head

Perbarui ulasan secara paksa

Jika Anda tidak ingin menggabungkan perubahan yang dibuat oleh pengguna lain dan ingin memaksa menyegarkan ulasan dengan versi lokal Anda, begini caranya.

Dalam kasus ini, Anda perlu mengetahui dua nilai.

  • Salah satunya adalah ID ulasan kode, yaitu segmen angka terakhir dalam URL ulasan kode. Sebagai contoh, jika URL ulasan kode adalah https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644, ID ulasannya adalah 31644.

  • Yang lainnya adalah versi sumber ulasan kode. Ini dapat diperoleh dari halaman detail ulasan kode. Dalam kasus ini, versi sumber yang sesuai adalah 8da076fb.

Kemudian, Anda dapat menjalankan git push -o review=<mr-id> -o old-oid=<old-oid>. Untuk contoh ini, perintahnya adalah git push -o review=31644 -o old-oid=8da076fb.

Dengan cara ini, Anda telah menyegarkan ulasan 31644 dengan versi lokal Anda. Perhatikan bahwa selama proses ini, perubahan yang dibuat oleh pengguna lain akan ditimpa. Untuk mencegah hilangnya perubahan tersebut, jalankan perintah ini hanya ketika Anda secara eksplisit ingin memaksa menyegarkan versi.

$ git push -o review=31644 -o old-oid=8da076fb
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31644 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   8da076fb44..8da076fb44  master -> refs/merge-requests/31644/head

Lewati ulasan dan langsung perbarui kode

Anda mungkin telah melakukan commit hanya untuk perubahan kecil, seperti memperbaiki kesalahan ketik dalam komentar kode, dan ingin melewati ulasan kode. Dalam hal ini, Anda dapat menggunakan perintah git push -o review=no untuk melewati pembuatan ulasan kode. Perilaku perintah ini konsisten dengan menjalankan git push ketika mode ulasan push tidak diaktifkan. Perhatikan bahwa Anda harus memiliki izin push pada cabang yang sesuai untuk menggunakan review=no guna langsung mendorong kode.

Beberapa catatan tambahan

Anda harus menjadi peninjau atau penulis untuk memperbarui ulasan. Jika tidak, pembaruannya akan gagal.

remote: +---------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                          |
remote: +---------------------------------------------------------------------+
remote: | Merge request #31644 update failed.                                 |
remote: | You need to be the author or reviewer to update this merge request. |
remote: +---------------------------------------------------------------------+