commit-rewriter 0.1: rapikan pesan commit sebelum open source
Oleh Zai · Let's Make It Easy
Dipublikasikan 2026-09-14
A reviewable timestamped branch makes cleaning agent-generated or private-context commit messages safer before open sourcing.
Membersihkan riwayat Git biasanya terdengar seperti pekerjaan kecil, sampai commit yang mau dipublikasikan masih membawa nama branch internal, nomor issue privat, atau jejak eksperimen yang tidak ingin dibaca orang luar. Simon Willison membuat commit-rewriter untuk kasus seperti itu. Alat ini adalah aplikasi web Python yang membantu menulis ulang pesan commit pada sebuah repository.
1. Apa itu commit-rewriter?
commit-rewriter dijalankan dengan uvx commit-rewriter path/to/repo. Pengguna dapat membuka repository yang ingin dirapikan, mengedit pesan commit, lalu mengirim perubahan melalui antarmuka web. Menurut penjelasan Simon Willison, proyek ini lahir ketika ia menyiapkan commit untuk rilis keamanan Datasette. Commit awalnya berisi sisa-sisa coding agent dan referensi issue dari repository privat, sehingga belum cocok untuk publikasi.
Git sendiri tidak menganggap pesan commit sebagai metadata yang kebal perubahan. Namun, menulis ulang riwayat tetap punya konsekuensi. Hash commit berubah, branch baru perlu ditinjau, dan workflow yang bergantung pada commit lama dapat ikut terdampak. Karena itu, alat seperti ini lebih cocok untuk repository atau cabang yang memang sedang disiapkan ulang, bukan untuk mengubah sejarah proyek bersama tanpa koordinasi.
2. Mengapa branch bertimestamp penting?
Saat pengguna mengirim hasil edit, commit-rewriter membuat branch bertimestamp dari keadaan repository saat ini. Branch cadangan itu memberi jalur untuk membandingkan hasil dan melakukan revert bila proses rewrite menghasilkan sesuatu yang tidak diinginkan. Fitur tersebut tidak menghapus risiko Git, tetapi membuat perubahan lebih mudah diperiksa sebelum dipakai sebagai sejarah utama.
Poin praktisnya sederhana: bersihkan pesan commit sebelum artefak masuk ke tempat publik, lalu tinjau diff dan struktur branch sebelum mengganti referensi utama. Jangan menganggap timestamp branch sebagai backup lengkap jika repository belum disalin atau di-push ke remote.
3. Hal yang perlu diperhatikan sebelum rewrite
Menulis ulang pesan commit tidak sama dengan membersihkan secret. Diff, tag, stash, dan object Git lain yang menyimpan potongan kode atau teks sensitif tidak ikut terhapus hanya karena pesan commit diubah. Untuk kasus kebocoran kredensial, tetap diperlukan secret scanning dan rotasi kredensial.
Batasan lainnya bersifat koordinasi. Jika repository sudah dipakai banyak orang, rewrite mengubah hash yang mungkin jadi acuan review, CI, atau release notes. Komunikasikan rencana rewrite, pilih cabang kerja yang aman, dan selesaikan dengan keputusan yang jelas tentang kapan sejarah baru menggantikan referensi lama.