Dahulu sebelum saya mengenal tools version control, saya terbiasa menggunakan tool semacam filezilla untuk melakukan file transfer dari komputer (local) ke server, tetapi tools ini ada beberapa kekurangan, diataranya tidak ada nya fitur untuk melakukan rollback saat kode baru yang terupdate ternyata memiliki bug dan kita mencoba untuk mengembalikan ke update sebelumnya, untuk melakukan hal ini sebelumnya saya harus melakukan backup secara manual.
selain itu untuk melakukan kolaborasi kita tidak bisa melakukan tracking tiap ada update baru entah itu yang kita lakukan sendiri atau orang lain di team kita yang melakukan update, kita hanya bisa menebak atau mengaku telah melakukan update di beberapa file.
dari beberapa kekurangan tersebut bisa diperbaiki dengan menggunakan version control, salah satu version control yang populer dan banyak digunakan oleh programmer adalah git dengan menggunakan git ini kita bisa dengan mudah melihat history dari setiap file yang teredit, di edit oleh siapa dan juga di edit kapan, selain itu kita juga mudah untuk melakukan versioning, dengan versioning ini kita bisa menentukan versi yang kita pakai saat development, versi yang masih dalam tahap testing dan juga versi yang siap untuk di rilis ke publik.
dalam pengaplikasiannya ada beberapa pendekatan yang bisa kita pakai dalam berkolaborasi dengan team menggunakan git, diantaranya adalah TBD (Trunk Base Development) dan juga Git Flow. namun untuk artikel ini saya hanya akan menjelaskan sedikit tentang TBD dan saya akan berfokus bagaimana menerapkan GitFlow dengan tools yang bisa memudahkan kita untuk menerapkan pendekatan tersebut
perbedaan yang mencolok dari penerapan pada branching pada pendekatan TBD, pada pendekatan TBD developer berkolaborasi pada 1 branch yaitu branch master / main dan setiap programmer mendapatkan akses ke branch master, mereka jalan sesimple commit and run dan dalam beberapa kasus mereka membuat branch fitur yang pendek.
sementara itu git flow lebih kompleks dari pendekatan TBD, dalam penerapan gitdlow branch master hanya bisa di akses oleh seorang Lead dari project itu dan tidak semua developer / kontributor memiliki akses ke branch master, selain itu developer di haruskan membuat branch feature/* ketika ada penambahan fitur baru, dan setelah fitur selesai, developer diharuskan untuk Open PR (Pull Request) kemudian akan dilakukan review dan merge ke branch develop oleh Lead Developer project saat sudah dipastikan tidak adanya conflict dan juga sudah lolos testing, branch develop ini nantinya yang akan di pakai di server staging.
pada saat ditemukan bug pada branch develop maka programmer di minta untuk membuat branch bugfix/* untuk memperbaiki bug yang berada di branch develop, saat di branch develop semua fitur sudah dilakukan pengujian dan siap untuk di rilis maka Lead Developer.
untuk skenario terakhir adalah ketika terdapat bug saat aplikasi sudah rilis atau bug pada branch master, pada kasus seperti ini developer diharuskan memperbaiki bug tersebut dengan membuat branch hotfix/* dan yang nantinya setelah hotfix ini selesai developer harus Open PR (Pull Request) ke branch master, kemudian akan direview dan di merge ke branch master dan develop oleh Lead developer.
nah penerapan gitflow ini cukup rumit dibandingkan dengan TBD, untuk awal awal membayangkan betapa banyaknya rules yang diterapkan saja bisa membuat saya sendiri pusing memikirkan bagaimana penerapannya, nah ada sebuah tool yang bisa mempermudah kita untuk menerapkan gitflow ini dengan mudah
tool yang saya gunakan saat ini adalah tool dari extensi visual studio code, bisa dilihat pada tautan berikut https://marketplace.visualstudio.com/items?itemName=vector-of-bool.gitflow
langkah pertama adalah kita harus melakukan inisiasi untuk gitflow nya dengan membuka command palete pada visual studio code nya, kemudian init gitflow nya seperti dibawah ini
saat melakukan init, kita akan disuruh memasukkan branch untuk master, develop, feature/*, bugfix/*, hotfix/* dan juga realease, untuk saya sendiri langsung mengikuti default nya saja, tapi jika ingin membuat branch dengan nama berbeda bisa disesuaikan sendiri
untuk membuat feature baru kita bisa menggunakan feature start, setelah itu akan ada popup nama feature yang ingin kita buat, dengan menggunakan tools ini otomatis gitflow akan membuat sebuah branch feature/* yang mana branch ini mengambil history commit dari develop
ketika feature sudah selesai, developer bisa melakukan commit pada perubahan barunya kemudian melakukan feature finish kemudian kita bisa push ke develop.
tidak jauh berbeda dengan saat kita membuat sebuah branch untuk bugfix/* maupun hotfix/*, kita bisa open command palete pada visual studio code kita tinggal mencarinya dengan cara yang sama seperti pembuatan sebuah branch feature/* seperti di atas.
jika kita lihat menggunakan git graph maka hasil dari pekerjaan kurang lebih seperti ini
kita bisa melakukan tracking dari setiap commit, author dan juga date modified dan kita juga bisa lihat kalau dari beberapa branch selalu berkesinambungan, kecuali branch yang belum di finish atau masih dalam tahap pengerjaan oleh developer.
bagi yang develop tidak menggunakan visual studio code bisa menggunakan tool git flow dari Daniel Kummer, bisa dibaca untuk dokumentasinya disini : https://danielkummer.github.io/git-flow-cheatsheet/