Git Flow

Fay Anyatasia
Dekowarehouse Project
4 min readApr 5, 2018

Pada proyek kita, kali ini, kita menerapkan yang namanya Git Flow. Sebenarnya itu apa sih? Apa bedanya dengan git biasa?

Git Flow adalah sebuah branching model Git yang diciptakan dan dipopulerkan oleh Vincent Driessen. Git Flow ini menarik banyak perhatian karena sangat cocok diterapkan pada proyek besar yang berkolaborasi dengan banyak orang. Kenapa?

  • Parallel Development : Git Flow memudahkan development secara paralel karena ia memisahkan antara pekerjaan pada tahap development dengan pekerjaan yang sudah selesai. Pekerjaan pada tahap development dikerjakan pada feature branch, sehingga ketika terjadi kesalahan ataupun hal-hal yang tidak diinginkan, developer dapat me revert ke commit sebelumnya dan ketika sudah puas, dapat langsung di merge ke main branch.
  • Collaboration : Dengan adanya feature branch, memudahkan developer untuk bekerja sama mengerjakan suatu fitur karena pada branch yang sama, dapat terlihat dengan jelas apa yang dilakukan oleh developer lain pada fitur tersebut.
  • Release Staging Area : Ketika pengembangan suatu fitur pada feature branch sudah selesai, kita dapat me merge branch tersebut ke develop branch (kalau pada PPL tahun ini namanya SIT-UAT) dimana branch tersebut adalah staging area untuk seluruh fitur yang lengkap tapi belum di release. Sehingga ketika akan di rilis berikutnya, itu sudah berisi semua fitur yang selesai.
  • Support for Emergency Fixes : Ada bug ketika sudah release? Tenang saja. GitFlow men support adanya hot-fix branch, yang bisa dipakai ketika terjadi bug untuk memperbaiki hal tersebut.

Bagaimana cara kerja nya?

Secara umum, GitFlow terdiri dari beberapa branch seperti yang digunakan pada mata kuliah PPL ini :

Main Branch

  • Master Branch : yang berisi source code yang siap di release
  • SIT-UAT Branch : yang berisi source code gabungan dari semua fitur-fitur yang telah selesai dikerjakan.

Supporting Branch

Branch — branch yang memiliki fungsi tertentu. Diantaranya :

  • Feature Branch
  • Hotfix : branch yang digunakan ketika ada bug saat kita merge ke master. Sehingga debug tidak dilakukan langsung di branch master. Dan juga sampai bug itu benar-benar diselesaikan, baru di merge lagi ke master.
  • Coldfix : branch yang digunakan jika product owner menolak salah satu atau lebih user story yang telah kita buat. Branch ini berada dibawah SIT-UAT.

Feature Branch

Branch ini dibuat dibawah SIT-UAT, digunakan untuk men develop fitur/user story baru. Di branch ini, developer yang mengerjakan fitur ini bisa saling berkolaborasi. Lalu ketika sudah selesai, akan di merge kembali ke SIT-UAT.

Release Branch

Branch ini digunakan untuk melakukan release yang dapat dilakukan apabila semuanya sudah bisa di merge ke master dari develop.

Terus setelah mengetahui branch-branchnnya gimana? First thing first! Dari branch master, dibuat sebuah development branch bernama sit-uat. Lalu buatlah branch fitur dari sit-uat tersebut. Pengerjaan sebuah user story sampai benar-benar selesai, dilakukan di sinii! Selanjutnya jika sudah selesai, baru dapat di merge ke sit-uat.

Tapi bagaimana ketika di merge dengan fitur-fitur yang lain justru muncul error? Atau product owner nya ngga setuju? Nah saatnya kita memperbaiki hal-hal tersebut di coldfix. Nanti ketika selesai, kembalikan lagi ke sit-uat. Ketika sudah siap release, kita dapat me merge branch sit-uat kita ke master. Eh tapi ternyata error pas release! Be calm. Kita dapat memperbaiki nya di branch hot-fix. Menyenangkan bukan? :)

Implementasi pada kelompok

Di Dekowarehouse project, kami menerapkan git flow. Ada branch master untuk fitur yang siap rilis. Ada juga branch sit-uat (dibawah master) untuk menggabungkan seluruh fitur yang telah selesai. Lalu dibawah sit-uat, ada lagi branch-branch dari user story yang telah kita ambil di sprint 1 yaitu menampilkan-list, lihat-detail, dan tampilan-pintasan. Di bawah-bawah branch fitur tersebut, kami membuat branch lagi yaitu branch task yang terkait dengan user story tersebut. Lalu kami mengerjakan task-task user story di branch tersebut.

Disini terasa sekali pentingnya saling code review satu sama lain. Karena jika terjadi perbedaan penamaan saja ataupun struktur folder, proses merge akan terhambat karena adanya conflict. Dan juga, agar tidak terjadi hal-hal yang tidak diinginkan ketika kita ingin merge ke sit-uat karena sudah melalui review dan kesepakatan teman-teman bersama.

Reference :

--

--