3 poin oleh GN⁺ 2024-02-02 | 1 komentar | Bagikan ke WhatsApp

Commit Git Favorit Saya

  • Menekankan pentingnya pesan commit Git, dan menganggapnya sebagai salah satu alat paling kuat untuk mendokumentasikan codebase.
  • Menjelaskan alasannya dengan mencontohkan commit yang ditulis oleh pengembang Dan Carley berjudul "Convert template to US-ASCII to fix error".
  • Berdasarkan pengalamannya di GDS (Government Digital Service), salah satu manfaat dari menulis kode secara terbuka adalah contoh seperti ini bisa dibagikan juga kepada orang-orang di luar organisasi.

Mengapa commit ini bagus

  • Perbandingan antara pesan commit dan perubahan kode memang menarik, tetapi itu bukan alasan utama mengapa commit ini layak dibagikan.
  • Jika ini dibuat oleh organisasi atau pengembang lain, pesan commit tersebut mungkin hanya akan diringkas menjadi change whitespace atau fix bug.
  • Sebaliknya, Dan meluangkan waktu untuk membuat pesan commit yang benar-benar berguna bagi orang-orang di sekitarnya.

Menjelaskan alasan perubahan

  • Pesan commit terbaik tidak hanya menjelaskan apa yang diubah, tetapi juga mengapa perubahan itu dilakukan.
  • Dalam commit ini, dijelaskan secara rinci mengapa pengujian yang diperkenalkan untuk mencocokkan isi /etc/nginx/router_routes.conf gagal dengan error ArgumentError: invalid byte sequence in US-ASCII saat dijalankan melalui bundle exec rake.
  • Informasi seperti ini sangat berharga untuk didokumentasikan, dan bisa dengan mudah hilang ketika orang lupa konteks aslinya atau pindah ke tim lain lalu meninggalkan organisasi.

Dapat dicari

  • Pada bagian awal pesan commit terdapat pesan error yang memicu perubahan, sehingga siapa pun dapat menjalankan git log --grep "invalid byte sequence" di codebase atau memakai pencarian commit GitHub untuk mencari error tersebut.
  • Bahkan, beberapa orang benar-benar bisa menemukan masalah ini lewat pencarian, lalu mengetahui siapa yang sebelumnya menemukannya dan bagaimana mereka menanganinya.

Menyampaikan cerita

  • Pesan commit tersebut memuat detail tentang bagaimana masalah itu terlihat, seperti apa proses investigasinya, dan bagaimana proses penyelesaiannya.
  • Pesan commit sangat cocok bukan untuk mendokumentasikan file, fungsi, atau baris kode tertentu, melainkan untuk mendokumentasikan informasi tambahan tentang perjalanan yang dialami codebase.

Membuat semua orang sedikit lebih pintar

  • Fakta bahwa Dan mendokumentasikan perintah-perintah yang ia jalankan di setiap tahap bisa menjadi cara ringan untuk berbagi pengetahuan di dalam tim.
  • Dengan membaca pesan commit ini, seseorang bisa mempelajari beberapa tips berguna tentang perangkat Unix.
  • Baik orang yang meninjau perubahan ini maupun orang yang menemukan commit ini di kemudian hari sama-sama bisa mempelajari hal-hal tersebut.

Membangun empati dan kepercayaan

  • Paragraf terakhir menambahkan konteks yang manusiawi.
  • Saat membaca ini, kita bisa merasakan frustrasi Dan karena harus menghabiskan satu jam melacak bug yang licik, sekaligus kepuasan setelah berhasil menyelesaikannya.
  • Pesan commit seperti ini membantu kita mengingat bahwa di balik setiap perubahan ada manusia yang telah membuat keputusan terbaik yang mereka bisa.

Pentingnya commit yang baik

  • Contoh ini memang kasus yang ekstrem, dan tidak berarti semua commit diharapkan memiliki tingkat detail seperti ini.
  • Namun, ini adalah contoh yang sangat baik dalam menjelaskan konteks di balik perubahan, membantu orang lain belajar, dan berkontribusi pada model mental kolektif tim terhadap codebase.
  • Jika ingin mempelajari lebih lanjut tentang manfaat pesan commit yang baik dan alat yang membantu menyusunnya dengan lebih mudah, penulis merekomendasikan "Telling stories through your commits" karya Joel Chippindale dan "A branch in time" karya Tekin Süleyman.

Pendapat GN⁺

  • Artikel ini menekankan pentingnya pesan commit Git, serta menunjukkan betapa kuatnya pesan commit sebagai alat untuk mendokumentasikan sejarah codebase dan berbagi pengetahuan.
  • Pesan commit Dan Carley menghadirkan contoh teladan dalam banyak aspek, termasuk alasan perubahan, kemudahan pencarian, penyampaian cerita, berbagi pengetahuan, serta membangun empati dan kepercayaan.
  • Dengan memahami dan mempraktikkan pentingnya menulis pesan commit yang baik, para pengembang dapat merasakan kolaborasi dan pemeliharaan kode yang lebih baik, yang pada akhirnya dapat berkontribusi pada peningkatan produktivitas dan efisiensi seluruh tim.

1 komentar

 
GN⁺ 2024-02-02
Opini Hacker News
  • Pendapat salah satu pendiri GitHub:

    • Pesan commit Git adalah cara yang unik untuk mendokumentasikan kode, tetapi tidak dioptimalkan dengan baik.
    • Sebagian besar alat hanya menampilkan baris pertama dari pesan commit.
    • Git merancang pesan commit agar bisa dibaca oleh semua peserta proyek seperti isi email, tetapi dalam praktiknya hampir tidak pernah terlihat.
    • Sulit juga menemukan pesan commit yang relevan dengan menggunakan git blame.
    • Pesan commit pada proyek Git sangat rinci, tetapi kenyataannya hampir tidak dimanfaatkan.
    • Menulis dokumentasi yang sangat baik melalui Git di sebagian besar komunitas nyaris merupakan pemborosan waktu.
  • Pentingnya pesan commit untuk masalah tertentu:

    • Baris pertama dari pesan commit yang menjelaskan masalah dengan jelas itu penting.
    • Jika diperlukan, bagian sisanya bisa dibaca untuk mendapatkan informasi tambahan.
  • Perasaan pribadi tentang pesan commit:

    • Ada kebanggaan dalam menulis pesan commit yang bagus, tetapi tidak yakin apakah itu benar-benar bernilai bagi orang lain.
    • Kebanyakan orang hampir tidak pernah menelusuri pesan commit.
    • Pesan commit yang indah bisa jadi hanya kesia-siaan programmer dan mungkin tidak memiliki nilai praktis.
  • Strategi menulis baris pertama pesan commit:

    • Saat menggunakan git log, baris pertama adalah yang paling penting.
    • Baris pertama seharusnya menjelaskan mengapa sesuatu dilakukan, bukan hanya apa yang dilakukan.
    • Sebaiknya ditulis seperti artikel berita, dari informasi yang paling penting menuju detail.
  • Sulitnya mengubah pesan commit:

    • Pesan commit sulit diubah setelah ditulis.
    • Dokumen seperti file .md, wiki, atau Confluence mudah diperbarui.
    • Sebaiknya hindari godaan untuk menjelaskan desain komponen di pesan commit, dan perbaiki dokumentasi bila perlu.
  • Pentingnya penjelasan rinci untuk commit kecil:

    • Semakin kecil commit, semakin mungkin dibutuhkan penjelasan yang relatif lebih panjang.
    • Penting untuk menjelaskan alasan di balik perubahan kecil secara rinci.
  • Keterbatasan pesan commit dan masalah pada alat:

    • Baris pertama pesan commit perlu ditulis dengan lebih spesifik.
    • Penjelasan panjang di bagian sisanya mungkin tidak terlalu bernilai.
    • Ada kritik terhadap masalah pada alat pengembangan, termasuk perlunya pesan error yang lebih jelas.
    • Dipertanyakan mengapa alat penyunting kode mengizinkan karakter spasi nonstandar.
  • Pentingnya kebersihan commit dibanding pesan commit:

    • Kebersihan commit yang baik lebih penting daripada detail pesan commit.
    • Commit yang rapi dan independen memudahkan fungsi kode diekstrak dan digunakan kembali.
  • Kritik terhadap autosquash dan rebase:

    • Autosquash menghambat penulisan pesan commit yang bermakna.
    • Rebase seharusnya digunakan agar pengembang dapat merapikan riwayat secara sengaja, bukan menjadi pola bawaan saat merge.