Mengoptimalkan Konsistensi Pesan Commit dengan Conventional Commits

Albi Mudakar
6 min readDec 6, 2023

“Code is read much more than it is written.” — Guido van Rossum

Apakah anda pernah merasa bingung atau ragu-ragu saat hendak menulis pesan commit sebelum melakukan push ke repositori?🤔

source: reddit r/ProgrammerHumor
source: reddit r/ProgrammerHumor

Dalam article kali ini, saya akan membahas tantangan umum yang dihadapi oleh banyak Developer saat memberikan pesan commit dan bagaimana meningkatkan keterbacaan dan kejelasan pesan tersebut.

Jika sebelumnya Anda pernah merasa bingung ketika menulis pesan commit, jangan khawatir disini kita akan menjelajahi solusi terbaik untuk tantangan umum yang dihadapi banyak Developer dalam memberikan pesan commit. Salah satu pendekatan yang akan kita bahas adalah Conventional Commits.

Conventional Commits adalah suatu standar yang membantu mengatur pesan commit menjadi lebih terstruktur dan mudah dibaca. Dengan menggunakan format khusus seperti feat, fix, atau chore, Conventional Commits bukan hanya membuat changelog otomatis, tetapi juga meningkatkan konsistensi dalam dokumentasi perubahan.

Mari kita temukan bersama praktik terbaik untuk memastikan setiap commit memberikan informasi yang berarti dan memudahkan kerjasama team, selamat membaca. 📚👀

Kenapa menggunakan Conventional Commits ? 🤔

  1. Konsistensi Pesan Commit, Dengan Conventional Commits, pesan commit konsisten, memudahkan pembacaan dan pemahaman riwayat perubahan.
  2. Otomatisasi Changelog, Conventional Commits mendukung otomatisasi pembuatan changelog, memudahkan pelacakan perubahan versi.
  3. Komunikasi yang Jelas, Pesan commit terstruktur memberikan informasi yang jelas tentang jenis perubahan, meningkatkan komunikasi tim.
  4. Integrasi dengan Alat Lain, Alat pengembangan dan CI/CD mendukung Conventional Commits, memungkinkan integrasi yang lebih baik.
  5. Dukungan Semver, Mendukung Semantic Versioning, mempermudah peningkatan versi berdasarkan jenis perubahan.
  6. Kolaborasi Terbuka, Cocok untuk proyek sumber terbuka, memberikan panduan jelas untuk kontributor.
  7. Memudahkan Pemeliharaan, Dengan pesan commit konsisten, pemelihara atau pengembang baru lebih mudah memahami sejarah proyek.
  8. Mendorong Best Practice, Conventional Commits mendorong praktik terbaik dalam penulisan pesan commit dan dokumentasi, membantu pengembang mengembangkan kebiasaan yang baik.

Tanpa berlama-lama lagi mari kita menuju pembahasan implementasi nya dan jangan lupa untuk siapkan secangkir kopi anda. ☕

IMPLEMENTASI

Sebelum ke tahap implementasi, di sini saya hanya memberikan beberapa contoh perintah pesan commit nya dalam bahasa indonesia agar dapat mudah dipahami, untuk penerapan praktik terbaik nya agar dapat menjaga konsistensi dan meningkatkan kolaborasi di dalam tim pengembangan, sangat disarankan menggunakan bahasa Inggris pada pesan commit nya. Ini memastikan kejelasan, memudahkan kolaborasi internasional, dan sesuai dengan praktik terbaik serta integrasi dengan alat-alat pengelolaan disuatu project.

1. Commit message dengan deskripsi dan footer Breaking Change
Pesan commit ini menambahkan fitur baru dan memberikan informasi bahwa ada perubahan signifikan yang memerlukan pembaruan manual.

Contoh Perintah:

$ git commit -m "feat: tambahkan fitur baru pada modul A
BREAKING CHANGE: perubahan pada API yang memerlukan pembaruan manual pada pengguna."

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “feat: tambahkan fitur baru pada modul A”: Pesan commit yang menyatakan bahwa commit ini menambahkan fitur baru pada modul A.
  • BREAKING CHANGE: perubahan pada API yang memerlukan pembaruan manual pada pengguna.: Bagian footer yang menunjukkan bahwa ada perubahan pada API yang signifikan sehingga memerlukan pembaruan manual oleh pengguna.

2. Commit message dengan tanda seru (!) untuk menarik perhatian pada Breaking Change
Pesan commit ini menekankan bahwa ada perubahan signifikan dengan fitur revolusioner yang memerlukan perhatian khusus.

Contoh Perintah:

$ git commit -m "feat!: implementasikan fitur revolusioner"

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “feat!: implementasikan fitur revolusioner”: Pesan commit yang menekankan bahwa fitur ini adalah revolusioner dan memerlukan perhatian khusus.

3. Commit message dengan scope dan tanda seru (!) untuk menarik perhatian pada Breaking Change
Pesan commit ini menunjukkan penambahan fitur pada modul API dengan menarik perhatian pada perubahan signifikan yang membutuhkan perhatian.

Contoh Perintah:

$ git commit -m "feat(api)!: tambahkan endpoint baru untuk API"

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “feat(api)!: tambahkan endpoint baru untuk API”: Pesan commit yang menambahkan fitur baru pada modul API dengan menekankan pada perubahan signifikan dan memerlukan perhatian khusus.

4. Commit message dengan keduanya (! dan Breaking Change footer)
Pesan commit ini memberitahu bahwa pekerjaan rutin telah dilakukan, dan ada perubahan signifikan pada konfigurasi yang perlu diperhatikan.

Contoh Perintah:

$ git commit -m "chore!: menjatuhkan dukungan untuk Node 6
BREAKING CHANGE: menggunakan fitur JavaScript yang tidak tersedia di Node 6."

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “chore!: menjatuhkan dukungan untuk Node 6”: PPesan commit yang menyatakan bahwa commit ini adalah tugas administratif (chore) yang menghapus dukungan untuk Node 6.
  • BREAKING CHANGE: menggunakan fitur JavaScript yang tidak tersedia di Node 6.: Bagian footer yang memberikan informasi bahwa ada perubahan yang bersifat breaking dengan penggunaan fitur JavaScript yang tidak tersedia di Node 6.

5. Commit message tanpa body (hanya dengan judul)
Pesan commit ini hanya memperbarui dokumentasi tanpa perubahan substansial lainnya.

Contoh Perintah:

$ git commit -m "docs: perbarui dokumentasi"

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “docs: perbarui dokumentasi”: Pesan commit yang menyatakan bahwa commit ini hanya melakukan pembaruan pada dokumentasi.

6. Commit message dengan scope
Pesan commit ini menambahkan dukungan untuk bahasa baru, dengan mencantumkan scope “lang” untuk menunjukkan modul atau bagian tertentu dari proyek.

Contoh Perintah:

$ git commit -m "feat(lang): dukungan bahasa baru"

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “feat(lang): dukungan bahasa baru”: Pesan commit yang menambahkan dukungan untuk bahasa baru dengan mencantumkan scope “lang” untuk menunjukkan modul atau bagian tertentu dari proyek.

7. Commit message dengan body multi-paragraph dan beberapa footers
Pesan commit ini merinci perbaikan bug pada fungsi X, memberikan informasi tambahan, menyebutkan adanya perubahan signifikan pada fungsi Y, dan mencantumkan reviewer yang telah melakukan peninjauan.

Contoh Perintah:

$ git commit -m "fix: perbaiki bug pada fungsi X
Ini adalah deskripsi lebih lanjut tentang perbaikan yang dilakukan.
BREAKING CHANGE: perubahan pada antarmuka fungsi Y yang memerlukan pembaruan manual.
Reviewed-by: nama-reviewer

Keterangan perintah :

  • git commit: Perintah untuk menyimpan perubahan pada repositori.
  • -m “fix: perbaiki bug pada fungsi X”: Pesan commit yang menyatakan bahwa commit ini merupakan perbaikan untuk bug pada fungsi X.
  • Ini adalah deskripsi lebih lanjut tentang perbaikan yang dilakukan: Bagian body dari commit yang memberikan deskripsi lebih rinci tentang perbaikan yang dilakukan.
  • BREAKING CHANGE: perubahan pada antarmuka fungsi Y yang memerlukan pembaruan manual.: Bagian footer yang menunjukkan bahwa ada perubahan signifikan pada antarmuka fungsi Y yang memerlukan pembaruan manual oleh pengguna.
  • Reviewed-by: nama-reviewer: Bagian footer yang mencantumkan reviewer yang telah meninjau perubahan ini.

8. Revert commit
Revert commit digunakan untuk membatalkan perubahan dari commit sebelumnya. Best practice untuk revert commit adalah memberikan pesan commit yang jelas dan deskriptif, mencantumkan alasan mengapa revert dilakukan, serta menyertakan referensi ke commit yang di-revert.

Contoh Perintah:

$ git revert -m 1 676104e a215868 -m "Revert: Batalkan perubahan yang mempengaruhi endpoint API"

Keterangan perintah :

  • git revert: Perintah untuk membuat commit yang membatalkan perubahan dari commit sebelumnya.
  • -m 1: Pilihan untuk menunjukkan bahwa kita ingin mempertahankan perubahan dari parent ke-1 (kemungkinan commit yang di-revert adalah hasil dari merge).
  • 676104e a215868: Daftar commit SHA yang akan di-revert, yaitu commit yang mempengaruhi endpoint API. anda bisa lihat daftar Commit SHA Buka Repositori di GitHub, Pilih Tab “Code” dan “Commits” dan Lihat Daftar Commit SHA. Di perintah code di atas Hanya sebagai contoh saja.
  • -m “Revert: Batalkan perubahan yang mempengaruhi endpoint API”: Pesan commit yang memberikan penjelasan mengapa revert dilakukan. Dalam konteks ini, revert dilakukan untuk membatalkan perubahan yang mempengaruhi endpoint API, mungkin karena adanya bug atau masalah yang perlu diperbaiki.

Kesimpulan

Mengadopsi Conventional Commits adalah langkah bijak untuk meningkatkan konsistensi pesan commit dalam proyek perangkat lunak. Dengan format yang terstruktur, dokumentasi perubahan menjadi lebih mudah dibaca, integrasi alat lebih efisien, dan otomatisasi pembuatan changelog semakin terkelola.

Conventional Commits bukan sekadar aturan penulisan, tetapi fondasi untuk kerjasama yang efisien dan pemeliharaan project yang terorganisir. Dengan fokus pada konsistensi dan transparansi, kita membangun fondasi yang kuat untuk mengoptimalkan pengelolaan perubahan dan menghadirkan perangkat lunak yang berkualitas tinggi.

Sekian dan terima kasih, semoga bermanfaat dan selamat mempraktikan!🚀

Sumber Referensi:
Conventional Commits Specification: https://www.conventionalcommits.org/

--

--