Kontrol versi untuk analisis menjawab pertanyaan yang muncul setiap proyek dipikirkan ulang, yaitu kode mana yang menghasilkan angka pada laporan, dan versi mana yang dipakai saat itu. Git memenuhi kebutuhan itu dengan mencatat perubahan kode beserta alasannya, sementara data dan hasil yang dapat dibangun ulang dikeluarkan dari catatannya. Topik ini menetapkan pembagian itu, contoh berkas pengecualiannya, dan pola commit yang berguna bagi data scientist. Setelah membacanya, setiap angka pada laporan dapat dilacak ke commit yang menghasilkannya.
Apa yang masuk versi dan apa yang tidak#
Kode, konfigurasi, dan dokumentasi masuk versi, sedangkan data mentah yang besar, hasil yang dapat dibangun ulang, dan berkas sementara tidak. Kaidah pemisahnya satu kalimat: apa pun yang dapat dibangun ulang dari berkas yang dicatat tidak perlu dicatat lagi. Berkas yang tidak dapat dibangun ulang, termasuk data mentah kecil yang menjadi sumber kebenaran, justru dicatat beserta asal-usulnya pada README.
# berkas yang tidak masuk versi (diawali titik saat dipakai: .gitignore)
__pycache__/
*.pyc
.venv/
.ipynb_checkpoints/
data/mentah/*.csv
data/hasil/*.png
.envDua entri yang paling sering dilupakan adalah .env yang memuat
kredensial dan folder data mentah yang berukuran besar. Kredensial yang
terlanjur di-commit harus dianggap bocor dan diganti, karena riwayat git
menyimpan setiap versi lama, dan menghapus berkasnya pada commit berikutnya
tidak menghapus sejarahnya.
Keluaran analisis seperti grafik dan tabel berada di sisi yang tidak dicatat,
sebab pipeline.py membangunnya ulang, dan kebijakan ini membuat
repository tetap kecil sambil menjaga satu sumber kebenaran, yaitu kode
beserta data mentahnya.
Commit sebagai catatan keputusan#
Commit yang baik menyimpan satu perubahan yang utuh dengan pesan yang menyatakan keputusannya, dan pesan semacam “perbaiki bug” tidak membantu pembaca enam bulan kemudian. Pola yang berguna bagi data scientist adalah menyebut perubahan analisis dan dampak angkanya, misalnya “keluarkan sensor rusak dari rata-rata, rata-rata turun dari 232.7 ke 44.9”.
Pola tersebut membuat riwayat berfungsi sebagai buku besar keputusan
analisis, dan penelusuran mundur melalui git log beserta git diff
menemukan commit yang mengubah suatu angka. Penanda keputusan besar, seperti
versi yang dikirim kepada pemangku kepentingan, diberi tag agar angka pada
laporan tertentu selalu dapat dibangun ulang persis.
Ukuran commit yang kecil memudahkan pembatalan yang presisi melalui
git revert, sedangkan commit raksasa yang mencampur pembersihan, pemodelan,
dan perubahan dokumentasi menyulitkan keduanya. Ritme yang sehat adalah satu
commit per keputusan analisis, bukan satu commit per pekan kerja.
Branch dan kolaborasi kecil#
Branch menjaga cabang eksperimen dari keadaan yang stabil, dan dua pola yang paling berguna bagi analisis adalah branch per eksperimen serta branch per laporan, dengan penggabungan ke main ketika hasilnya diserahkan. Bandingkan hasil antar branch adalah pekerjaan yang sah, dan angka pada setiap laporan dibangun dari commit yang dicatat pada lampirannya.
Data yang ditulis proses, seperti cache dan checkpoint notebook, masuk daftar pengecualian yang sama, karena keduanya berukuran besar dan tidak membawa keputusan. Berkas notebook yang ter-commit disarankan dijalankan ulang penuh sebelum dicatat, agar keluaran sel yang tersimpan tidak berbeda dari kodenya.
Kesalahan umum#
Kesalahan pertama adalah meng-commit kredensial untuk kenyamanan. Rahasia
yang masuk riwayat harus diganti, dan berkas .env yang berada di
pengecualian sejak awal membuat kecelakaan itu tidak pernah terjadi.
Kesalahan kedua adalah commit raksasa tanpa pesan yang bermakna. Riwayat
kehilangan fungsinya sebagai catatan keputusan, dan kembali ke versi angka
lama menjadi tebakan alih-alih perintah git checkout yang tepat.
Kesalahan ketiga adalah meng-commit hasil berkas besar yang dibangun ulang setiap eksekusi. Repository membengkak dan perbandingan antar versi menjadi berisik, sedangkan berkas pengecualian memisahkannya sejak awal.
Ringkasan#
- Kode, konfigurasi, dan dokumentasi masuk versi, sedangkan hasil yang
dibangun ulang serta data besar dikeluarkan melalui
.gitignore. .envdan folder data mentah adalah entri pengecualian yang paling sering dilupakan, dan kredensial yang terlanjur masuk harus diganti.- Commit yang kecil dengan pesan keputusan menjadikan riwayat sebagai buku besar analisis, dan tag menandai versi yang dikirim.
- Hash commit yang dicantumkan pada laporan membuat setiap angka dapat dibangun ulang persis.
Referensi#
- Git Documentation — git-scm.com — dokumentasi resmi Git beserta buku Pro Git yang bebas dibaca.
- Ignoring Files — GitHub Docs — panduan resmi berkas pengecualian dan pola yang umum dipakai.