Statistik Kontribusi: shortlog dan diffstat
Gunakan git shortlog, --stat, --shortstat, dan diffstat untuk merangkum siapa mengerjakan apa dan seberapa besar perubahannya.
Dari daftar commit ke angka
git log memberimu daftar, tapi kadang kamu butuh angka: siapa kontributor paling aktif bulan ini? Seberapa besar PR ini sebenarnya? Git punya alat ringkasan bawaan untuk pertanyaan-pertanyaan itu. Kenapa alat ini ada? Karena manajer, maintainer open source, dan kamu sendiri secara berkala butuh jawaban kuantitatif tanpa menghitung manual.
git shortlog: ringkasan per author
git shortlog -snContoh output:
42 Budi Santoso
17 Siti Rahma
5 Andi PratamaFlag -s menekan isi pesan commit sehingga yang tampil hanya hitungan, dan -n mengurutkan dari terbanyak ke tersedikit. Hasilnya adalah papan peringkat kontributor berdasarkan jumlah commit. Kapan dipakai? Untuk laporan kontribusi, misalnya menentukan siapa berhak masuk daftar credits rilis, atau sekadar menjawab "siapa yang paling aktif di repo ini?"
Mau dibatasi rentang waktu? shortlog menerima filter revisi yang sama seperti log:
git shortlog -sn --since="1 month ago"Tanpa -- di sini karena "1 month ago" adalah filter revisi, bukan path. Ini menampilkan kontributor 30 hari terakhir saja, jauh lebih relevan untuk laporan bulanan daripada total sepanjang masa.
--stat vs --shortstat: seberapa besar perubahannya
git diff --stat HEAD~3..HEADContoh output:
app.js | 24 +++++++++++++++++++++---
style.css | 8 +++++---
2 files changed, 27 insertions(+), 5 deletions(-)Flag --stat memberi rincian per file: berapa baris tambah dan kurang di tiap file. Versi ringkasnya:
git diff --shortstat HEAD~3..HEADContoh output:
2 files changed, 27 insertions(+), 5 deletions(-)--shortstat membuang rincian per file dan menyisakan satu baris total. Kapan memakai yang mana? --stat saat kamu ingin tahu file mana yang paling banyak berubah (biasanya biang kerok PR raksasa), --shortstat saat kamu cuma butuh angka total untuk ditempel di laporan atau pesan commit.
diffstat: alat eksternal untuk diff mentah
diffstat bukan perintah Git, melainkan program terpisah yang membaca diff format unified dari stdin. Kenapa disebut di sini? Karena kadang kamu mendapat file .patch dari orang lain dan ingin tahu ukurannya sebelum apply:
git diff main...fitur > perubahan.patch
diffstat perubahan.patchContoh output:
app.js | 24 +++++++++++++++++++++---
style.css | 8 +++++---
2 files changed, 27 insertions(+), 5 deletions(-)Kapan dipakai? Saat berurusan dengan patch file di luar repo, misalnya hasil git format-patch yang dikirim lewat email. Di dalam repo biasa, git diff --stat sudah cukup dan tidak butuh alat tambahan.
Membaca angka dengan sehat
Satu peringatan penting: jumlah commit dan baris bukan ukuran kualitas. Commit "fix typo" dihitung sama dengan commit "tulis ulang modul auth". Statistik ini berguna untuk gambaran aktivitas, bukan untuk menilai siapa programmer terbaik. Pakai untuk laporan dan perencanaan, jangan untuk menghakimi.
Kesalahan umum pemula
Salah: menjalankan git shortlog tanpa -sn lalu tenggelam dalam daftar pesan commit per author yang panjangnya berhalaman-halaman.
Benar: git shortlog -sn langsung memberi angka yang bisa dibaca sekilas. Tambahkan --since kalau hanya peduli periode tertentu.
Salah: menilai besar PR dari jumlah file saja, misalnya "cuma 3 file, pasti kecil".
Benar: cek git diff --stat: 3 file bisa berarti 27 baris atau 2700 baris. Angka insertions/deletions jauh lebih jujur daripada hitungan file.
Tantangan
Buat laporan kontribusi mini
Jalankan git shortlog -sn --since="1 month ago" di sebuah repo, lalu pilih PR atau rentang commit dan hitung ukurannya dengan git diff --shortstat. Tulis 3 baris kesimpulan: siapa paling aktif, dan seberapa besar perubahan yang kamu ukur.