Commit message adalah bagian yang sering diabaikan dalam programming menggunakan version control. Padahal menurut saya commit message sangat penting saat membaca dan mengetahui alasan kenapa kode ditulis. Apalagi mengerjakan proyek bersama dalam tim.

Jika saya membaca baris kode seringkali saya tak tahu kenapa kode ini ada di sini. Apalagi jika memperbaiki bug. Kadang kita perlu mengetahui alasan kode itu ditulis sebelum memperbaiki bug agar kita tak membuat bug baru dengan perbaikan kita.

Penyebab programmer malas (termasuk saya) menulis commit message adalah tak tahu apa yang mesti ditulis. Setelah menghabiskan pikiran menulis kode untuk membuat fitur atau memperbaiki bug, otak kita sudah capek untuk memikirkan apa yang perlu ditulis di commit message. Apalagi kalo dikejar deadline. Hal seperti itulah yang akhirnya membuat saya ingin mencari cara mempermudah atau membantu dalam menulis commit message.

commitizen-git-log-example

Apa itu commitizen

Commitizen adalah command-line interface (antarmuka baris perintah) yang memudahkan kita membuat commit message dengan format yang sudah kita tentukan. Hasilnya kita akan mempunyai commit message yang seragam sehingga mudah dibaca dan dimengerti.

Commitizen akan menanyakan beberapa hal saat kita membuat commit. Hal ini akan mempermudah kita dalam membuat commit message yang deskriptif dan mudah dimengerti. Bonusnya kita tak perlu berpikir lebih. Hanya perlu menjawab pernyataan dari commitizen.

commitizen-command-example

Keuntungan tambahan mempunyai commit message yang seragam adalah kita bisa mengekstrak sejarah commit untuk dijadikan dokumen change log.

Memasang dan Menggunakan Commitizen

Commitizen yang saya pakai berbasis JavaScript. Sehingga kita butuh NodeJS dan npm terpasang di dalam sistem.

Perintah berikut akan memasang commitizen cli secara global dalam sistem:

npm install -g commitizen

Saya menggunakan format “Conventional Changelog” sebagai standar format git message, maka saya perlu memasang plugin commitizen untuk “Conventional Changelog”

npm install -g cz-conventional-changelog

Dan karena saya memakai format ini secara global untuk semua proyek maka saya perlu menambahkan konfigurasi global commitizen dengan membuat berkas .czrc di “home directory” ~/.czrc (windows: C:\Users\<username>) dan masukkan nilai ini:

{
  "path": "cz-conventional-changelog"
}

Sekarang kita sudah bisa menggunakan commitizen dengan perintah git:

git cz

Dan karena saya pemalas maka saya membuat alias untuk perintah ini:

Linux/MacOS

alias gcz=git cz

PowerShell

function gitCommitizen {
    git cz
}

Set-Alias gcz gitCommitizen

Selamat mencoba.