gitlogstatistikMenengah5 mnt baca

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

bash
git shortlog -sn

Contoh output:

bash
    42  Budi Santoso
    17  Siti Rahma
     5  Andi Pratama

Flag -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:

bash
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

bash
git diff --stat HEAD~3..HEAD

Contoh output:

bash
 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:

bash
git diff --shortstat HEAD~3..HEAD

Contoh output:

bash
 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:

bash
git diff main...fitur > perubahan.patch
diffstat perubahan.patch

Contoh output:

bash
 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.