Apa Itu Pull Request?
Pull request adalah suatu permintaan untuk menggabungkan (merge) kode yang kita modifikasi dengan repositori utama atau repositori lain. Pada proses pull request biasanya kita bisa mengatur hak akses kepada pengguna yang dapat melakukan penggabungan kode (merge) dan juga menentukan pengguna yang boleh memberikan komentar atau review.
Pull request bisa dibilang sudah cukup umum saat ini, karena hampir digunakan oleh semua perusahaan yang memiliki tim pengembang minimal 3 orang atau lebih. Apalagi di proyek-proyek open-source yang sudah mainstream menggunakan metode pull request untuk manajemen kolaborasi sesama kontributor.
Bitbucket Sebagai Layanan Online Git
Git adalah suatu perangkat lunak untuk manajemen kode. Bitbucket adalah penyedia layanan SaaS yang memanfaatkan Git. Selain manajemen kode, Bitbucket memiliki banyak fitur lainnya seperti CI/CD, manajemen pengguna, mengatur hak akses repositori git dan lain sebagainya.
Bitbucket merupakan salah satu produk dari Atlassian. Alternatifnya yang terkenal adalah Github dan Gitlab. Ada perbedaan istilah yang digunakan antara Bitbucket, Github dan Gitlab. Bitbucket menyebut pull request sedangkan Github dan Gitlab menyebutnya dengan merge request. Sebetulnya tidak ada perbedaan yang signifikan, tujuannya tetap sama yaitu untuk melakukan code review sebelum kode digabungkan.
Manfaat Pull Request?
Kenapa harus repot-repot menggunakan pull request?
- Memastikan kode yang akan digabungkan dengan suatu branch sudah sesuai standard. Misalnya aturan penamaan file, variable dan lain sebagainya
- Mengurangi resiko kode yang konflik ketika digabungkan
- Menstimulasi kolaborasi yang transparan melalui umpan balik disetiap pull request
Konfigurasi Pull Request
Yang perlu dilakukan agar bisa memaksimalkan fitur pull request adalah dengan mengatur hak akses terhadap suatu branch. Di Bitbucket kita bisa akses menu ini dari repositori yang sudah dipilih lalu masuk ke repository setting dan klik link Branch Permission.
- Klik menu Branch Permissions
- Disini contohnya pilih By Type, misalnya pilih branch Release
- Pastikan tidak ada yang bisa melakukan write access ke branch release
- Pastikan hanya pengguna tertentu yang dapat melakukan merge
- Tekan Save untuk menyimpan pengaturan branch
Dengan pengaturan tersebut, maka selain pembuat branch tidak dapat melakukan push langsung ke branch Release. Pengguna yang ingin berkontribusi ke branch Release harus melalui tahapan khusus, singkatnya adalah sebagai berikut:
- Clone repositorinya
- Membuat branch misal dengan perintah git checkout -b my_workspace
- Melakukan penambahan atau perubahan di branch my_workspace
- Commit dan push ke branch my_workspace
- Membuat permintaan pull request
Praktik Pull Request
Setelah sempat melakukan kloning repositori beberapa hari lalu, ada baiknya kita melakukan pull terlebih dahulu untuk memastikan kode terbaru berada di branch utama.
Selanjutnya kita ingin menambahkan kode baru, maka kita harus membuat branch baru atau melanjutkan pekerjaan di hari sebelumnya menggunakan branch yang sudah dibuat. Tapi sebelum itu mari kita lihat bagaimana jika kita memaksakan push kode di branch utama.
- Kita buat file dummy bernama test.txt
- Tambahkan file test.txt ke index .git
- Commit kode dengan keterangannya
- Push kode ke server. Perhatikan tulisan berwarna merah dibagian paling bawah. ! [remote rejected]. Kita tidak dapat melakukan push kode.
Setelah kita mengetahui karakteristik pull request, maka kita perlu membuat branch baru untuk bekerja dan setelah itu push kode ke branch kita sendiri. Lalu melakukan pull request. Berikut contohnya:
- Buat branch baru untuk kita bekerja
- Tambahkan atau ubah file yang diperlukan. Disini kita buat file baru, anggap saja kita ingin membuat fitur baru
- Masukan file ke dalam index .git
- Commit kode berserta keterangannya
- Push kode di branch kita sendiri. Perhatikan garis kotak berwarna merah. Di terminal biasanya kita bisa tekan Ctrl+click (mouse) untuk membuka linknya menuju ke halaman Bitbucket untuk submit pull request
- Branch sumber
- Branch tujuan, dimana branch tujuan disini adalah branch master
- Memberikan judul yang “pull requet”
- Memberikan informasi detail terkait perubahan kode atau pemintaan pull request
- Sertakan screenshot atau file apapun yang diperlukan dalam proses penggabungan kode
- Tentukan reviewers, biasanya kita memilih atasan kita atau team lead tertentu
- Centang opsi ini jika ingin branch my_workspace dihapus setelah pull request disetujui / di merge
- Tekan tombol “Create pull request” untuk mengirim permintaan dan selanjutnya tinggal menunggu review atau feedback. Jika semua berjalan normal, maka kita akan dapat melihat pekerjaan kita sudah tergabung di branch master, salah satu caranya adalah dengan melihat history commit di branch master
Otomatisasi Code Review
Biasanya layanan online manajemen kode sudah dibekali dengan berbagai macam fitur yang memanjakan penggunanya. Salah satunya adalah CI/CD. Di dalam CI/CD ada istilah pipeline. Dan didalam pipeline ini kita bisa menyusun langkah demi langkah yang harus dijalankan secara otomatis ketika ada aktivitas push, pull request atau merge. Lebih lengkapnya akan dibahas di artikel yang lain.
Semoga bermanfaat 🙂