Pull Request: Bagaimana Merge berlaku di Github

Pull Request: How merging Happened in Github

Pull Request: Bagaimana Merge berlaku di Github

Photo by Sigmund on Unsplash

Pengenalan

Merge adalah sebuah tindakan dimana git akan menggabungkan commit yang telah dibuat menjadi satu commit yang baharu pada hujung (tip) sesebuah git history.

Git Merge | Atlassian Git Tutorial

Jika di lokal, kita boleh melakukan git merge untuk mencantumkankan commit daripada feature_branch kepada main_branch. Namun, ia sedikit berbeza apabila kita ingin melakukannya pada penyedia cloud hosting seperti Github.

Terdapat dua keadaan yang membezakan cara untuk merge commit di Github.

  1. Keadaan Branch tidak dilindungi

  2. Keadaan Branch dilindungi

Branch tidak dilindungi

Sebuah branch yang tidak dilinduingi bermaksud branch tersebut tidak termaktub kepada peraturan-peraturan tertentu yang boleh di buat pada Github. Misalnya branch ini membenarkkan sesiapa sahaja untuk di- merge kepada dan juga daripada mana-mana feature branch yang ada.

Untuk branch jenis ini, kita boleh sahaja membuat commit dan merging seperti biasa di lokal kemudian push ke Github.

# pastikan berada di main branch 
$ git checkout main
# commit sesuatu perubahan 
$ git checkout -b feature_1 
$ git add . 
$ git commit -m "commit pertama"

# push branch ke remote
$ git push --set-upstream feature_1 origin 

# proses merge
$ git checkout main
$ git merge feature_1 

# push ke remote github
$ git push

Selepas menjalankan command diatas, kita akan mendapati main branch pada remote telah dikemaskini daripada feature_1 branch. Proses merging telah berjaya tanpa melibatkan penggunaan UI di Github (iaitu Pull Request atau PR)

Branch dilindungi

Sebaliknya, jika branch tersebut dilindungi; yakni terdapat peraturan yang telah ditetapkan supaya pengaturcara tidak boleh sewenang-wenangnya merge dan push daripada branch lain seperti yang berlaku keadaan branch tidak dilindungi. Disebabkan ia dilindungi, maka cara yang ditunjukkan pada keadaan pertama tidak dapat dilakukukan.

Ini keraana atas sebab peraturan yang telah ditetapkan, Github akan menghalang daripada pengguna untuk push commit tersebut melaikan ia melepasi pertaturan yang telah ditetapkan.

Kebiasaannya branch dilindungi akan mempunyai lapisan dibawah

  1. Code review — kod akan disemak oleh ahli projek dan menunggu untuk approval

  2. Code testing — Kod akan melalui testing (unit test, etc) yang telah ditetapkan dalam Git Actions.

Maka, apakah langkah untuk melakukan merge kepada main branch supaya anda boleh mengemaskini/menambah kod baru kepada projek anda untuk keadaan ini?

Kita perlu melakukan apa yang dinamakan sebagai Pull Request.

Pull Request

Proses Pull Request (PR) adalah seperti berikut:

  1. Buat commit seperti biasa
# Cipta branch baharu
$ git checkout -b my_branch 
$ git push --set-upstream my_branch origin 
$ git add . 
$ git commit -m "menambah sesuatu"
  1. Github akan mengeluarkan notifikasi mengenai commit yang telah berlaku dengan butang pull request. Tekan butang pull request tersebut.

    (Jika tidak ada notifikasi tekan pull request pada projek repo anda di Github dan tekan Create new pull request.)

  2. Setelah menekan Pull request, Github akan memaparkan Compare change dan kita perlu memilih

    • Compare branch (feature branch)

    • Base branch (main branch)

  3. Pilih my_branch sebagai compare, dan main sebagai base untuk kita merge my_branch kepada main.

  4. Selepas itu Github akan memaparkan seksyen dimana jika kod anda melepasi testing dan juga kod anda perlu melalui code review (approval boleh dibuat oleh sesiapa sahaja yang terlibat dalam projek, atau orang tertentu.)

  5. Selepas Approve dan Submit review diberikan oleh pengaturcara lain, maka kod anda telah bersedia untuk dicantukan kepada base branch yang telah ditetapkan.

  6. Tekan Merge pull request dan kod akan dicantumkan. Siap!

Mengapa perlu sedemikian?

Anda sedia maklum bahawa penggunaan Git dapat membantu projek yang besar dan melibatkan ramai pengaturcara. Github telah menjadi sebuah tempat dimana sumber kod disimpan dan digunakan untuk tujuan deployment. Maka amat mustahak kod-kod ini dijaga dan dilindungi daripada sebarang kesilapan dan masalah yang boleh menyebabkan kod-kod legasi tadi mengalami ralat.

PR secara tidak langsung mencipta satu lapisan (boleh jadi beberapa lapisan) yang menjadi penghalang sebelum sesebuah feature atau penambahan berlaku ke dalam kod yang asal.

Dalam code review, pengaturcara lain boleh menyemak struktur kod tersebut samada boleh diterima, tidak baik atau memerlukan penambah baikan. Disini juga pengaturcara boleh mengkritik mengenai kod yang ditulis sekaligus menjadi tempat perbincangan.

Code testing pula boleh di setup bagi memeriksa kod yang ditulis seperti, memenuhi kriteria cara penulisan kod untuk projek tersebut, atau menyemak samada kod tersebut tidak terdedah kepada penyelewengan dan sebagainya.

Anda boleh menetapkan peraturan-peraturan sesebuah branch di Setting dan pilih Branch untuk menentukan bagaimana branch tersebut dilindungi.

Sekian itu saja daripada saya. Cuba lakukan PR anda sendiri dan komen jika artiken ini membantu. Selamat mencuba.

Sumber

  1. Rajah: https://wac-cdn.atlassian.com/dam/jcr:c6db91c1-1343-4d45-8c93-bdba910b9506/02%20Branch-1%20kopiera.png?cdnVersion=1031