Best Gitflow Ever

Tirta Hema
Basic People
Published in
3 min readMay 28, 2019

pada story kali ini saya akan membuat dan merancang gitflow versi saya sendiri.

Git adalah sebuah version control system yang terdesentralisasi. Git sangat berguna jika kita mengerjakan sebuah proyek secara bertim karena git dapat melakukan automasi pada beberapa task dan bisa menggabungkan pekerjaan-pekerjaan yang sudah dilakukan menjadi satu.

Jika mengerjakan sebuah proyek secara bertim dimana proyek itu terdapat banyak fitur-fitur dan proyek tersebut terus berkembang sepanjang waktu akan sangat sulit dilakukan jika tidak menggunakan workflow yang baik. Dengan menggunakan workflow yang baik kita dapat mengatur merge antar fitur atau merelease edisi terbaru dari proyek yang sedang kita kerjakan.

ini merupakan contoh workflow paling sederhana

pada flow ini developer hanya akan berkerja pada satu branch saja yaitu branch master. flow ini akan sangat sulit jika kita mempunyai banyak fitur atau beberapa fitur dikerjakan secara bersamaan. misalnya pada saat salah satu fitur mengalami fail pada tahap build maka seluruh branch tersebut akan fail padahal hanya satu fitur yang fail tidak keseluruhan. Sehingga gitflow seperti ini tidak baik digunakan untuk proyek-proyek besar.

berikut adalah flow yang saya buat terinspirasi dari gitflow gitflow yang ada di internet maupun yang digunakan pada PPL

pada flow yang saya buat dimulai dari branch master yang akan berisi dengan initial commit yang memuat seperti penjelasan akan proyek dan lainnya. selanjutnya pada branch development, pada awal branch ini memuat seperti setting seperti gitlabci, dockerfile dan lain-lain yang mendukung. Tidak ada pengerjaan fitur pada branch ini. fitur-fitur dikerjakan pada branch feature branch. pada diagram yang saya gambarkan terdapat 2 garis branch feature. Branch feature bisa menjadi sangat banyak tergantung dari fitur-fitur yang akan dibuat. sehingga pada branch feature developer dapat bekerja di branch masing-masing tanpa menggangu branch lain.

Lantas bagaimana ketika suatu feature sangat kompleks sehingga harus dikerjakan oleh beberapa orang? Akan ada sebuah branch baru yang bernama sub-feature yang nantinya setelah selesai dapat di merge ke branch feature berikut adalah ilustrasinya.

Setiap merge pada branch feature dan sub-feature harus melewati tahap code review. code review adalah tahapan dimana code yang dibuat oleh para developer sudah baik dan tidak mempunyai error atau bug.

Jika sebuah fitur sudah selesai branch tersebut akan dimerge ke branch developer. di branch developer fitur akan di deploy tetapi hanya untuk kepentingan developer saja. disini developer dapat melihat apa yang sudah mereka kerjakan, kemudian dari branch developer akan lanjut ke branch pre-release. pre-release adalah branch dimana diluar tim developer bisa melihat hasil tetapi, bukan untuk umum hanya untuk internal team saja seperti product owner. jika terdapat kesalahan atau bug dari branch ini akan langsung diselesaikan pada branch hotfix untuk pre-release.

Jika sudah memenuhi persyaratan dari tim internal, dan sudah siap di release maka akan di merge ke branch master. branch master akan mendeploy hasil pekerjaan yang sudah melewati tahap-tahap sebelumnya kepada publik. jika terdapat kesalahan atau bug pada branch ini akan langsung dikerjakan pada branch hotfix untuk master.

Tujuan dari gitflow yang saya buat adalah git flow ini memungkinkan feature dibuat oleh beberapa orang sekaligus tanpa menganggu satu sama lain. Pembagian feature harus modular sehingga tidak harus saling menunggu. Mengapa saya membuat gitflow mempunyai banyak tingkatan seperti developer, pre-release, release adalah mengurangi kemungkinan adanya bug atau tidak sesuai dengan permintaan owner pada saat di release, sehingga pada saat release dan dipakai oleh publik aplikasi yang dibuat sesuai dengan keinginan tim, dan bebas dari bug.

Sekian blog saya terima kasih sudah membaca.

--

--

Tirta Hema
Basic People

Learn to write about anything related to my life (business and tech, food, etc)