git
Catatan teknis seputar web development, DevOps, dan integrasi AI.
31 artikel
- 13.45tooling
Mesin Penjaga Klaim Review di Pesan Commit
Tiga invarian mesin untuk klaim Security-review: tepat satu, posisi trailer, dan substansi dicek terhadap diff.
TL;DR: Klaim review di pesan commit selama ini cuma perkataan, nggak ada yang ngecek. Jadi repo itu bikin hook commit-msg yang ngetes tiga invarian: baris Security-review: harus tepat satu, posisinya bener, dan klaim tests only dicocokkan sama diff. Hooknya memang bisa di-bypass, tapi tujuannya menaikkan harga kelalaian, bukan nahan penipu.
#git#bash#security - 18.02ai
Superpowers untuk Coding Agent: Branching Masuk Akal
Adopsi kerangka superpowers mengubah aturan branching dari ritual penamaan jadi kebutuhan isolasi worktree. Pengalaman menerapkannya pada coding agent.
TL;DR: Superpowers itu framework berbasis skills yang memaksa coding agent jalan terdisiplin: brainstorming, worktree, TDD, sampai code review. Git worktree bikin tiap tugas punya branch dan direktori sendiri, jadi dua sesi bisa paralel tanpa tabrakan. Buat proyek kecil sih lebay, tapi pas agen jalan ratusan langkah sendirian, disiplin ini penyelamat.
#claude-code#superpowers#git-worktree - 23.04backend
CI merah karena schema kosong: migrasi dulu, baru pytest
Pipeline CI gagal pada database service yang masih kosong; satu baris alembic upgrade head sebelum pytest menyelaraskan kontrak CI dengan container produksi.
TL;DR: Pipeline CI jadi merah gara-gara database kosong, bukan karena kode error—ternyata migrasi nggak pernah jalan di CI. Solusinya gampang, tinggal tambahin alembic upgrade head sebelum pytest biar urutannya sama kayak produksi: schema dulu, baru tes. Sekarang error yang muncul beneran nunjukin bug kode, bukan tabel yang belum dibuat, jadi debugging nggak buang waktu lagi.
#ci#alembic#pytest - 22.46testing
Titik Buta Glob Git di Build Gate Token
Pola bintang dua di git ternyata melewatkan file komponen yang langsung di src; empat perintah repo tempaan membongkar titik buta build gate token.
TL;DR: Gue bikin gate buat ngeblok hex kayak #fff123 di Next.js, kirain pola rekursif udah nangkep semua file. Pas dites pakai repo tempaan, file yang langsung di src/ ternyata lolos dari git ls-files. Akhirnya di-fix pakai gabungan pola biar file direct sama nested ketangkep semua, plus nambah dua test regresi.
#git#glob#build-gate - 22.29testing
Hari Pertama Pasang Vitest, Langsung Ketahuan Dua Bug
Harness test pertama di frontend Next.js: 12/12 ijo tapi dua bug ketahuan pas nulisnya, satu nama klien dobel dan satu blind spot glob di build gate.
TL;DR: Awalnya repo Next.js jalan tanpa tes, pas pasang vitest dan nulis dua belas tes semua ijo. Tapi pas nulisnya malah ketahuan dua bug, ada nama klien dobel di beda grup industri dan gate validate-tokens yang kelewat file langsung di dalam src. Jadi intinya pasang tes jangan telat, justru pas nulis itulah bug kelihatan.
#vitest#testing#git - 16.58database
Satu Dump per Tag: Backup Database yang Bisa Dijawab
Cron harian nggak bisa jawab dump mana yang cocok sama versi yang live. Satu dump per tag rilis di folder .docs/BACKUPDB bikin rollback berhak nebak.
TL;DR: Saya pernah apes restore dump harian cron ternyata skemanya nggak cocok sama kode. Sekarang tiap rilis bikin annotated tag dan dump mariadb-dump dengan nama sama jadi jelas pasangannya. Tiap dump dites restore ke container kosong biar yakin bisa dipake pas darurat.
#backup#mariadb#git - 15.30security
Gitleaks Crash Pas Commit Multi-File, Lahir Gerbang Supply Chain
Hook pemindai secret crash saat commit multi-file. Ternyata satu flag hilang di definisi hook, dan ujungnya CI diikat checksum.
TL;DR: Commit multi-file mendadak gagal gara-gara hook gitleaks-system crash karena lupa set pass_filenames false. Bugnya emang ada di file upstream, cuma hook golang sama docker yang bener. Akhirnya gue pindah ke hook lokal yang checksum-nya dicek plus CI cuma pake checkout yang di-pin SHA.
#github-actions#security#ci-cd - 17.55tooling
Konflik sync tanpa leluhur: alarm, bukan merge
Classifier status mirror Plane pakai hash sha256 sebagai hakim tunggal, dan konflik dua sisi di jalur satu arah runtuh jadi alarm.
TL;DR: Gue kira sinkronisasi bakal auto gabungin perubahan, ternyata pagesync sengaja nolak pintar-pintaran. Kalau di jalur satu arah dua sisi sama-sama berubah, dia langsung kasih alarm plane-changed dan git yang menang jadi harus push ulang. Semua keputusan cuma ngandelin hash SHA256 sama data last_sync biar nggak nebak-nebak dan data nggak hilang diam-diam.
#git#sync#python - 14.05devops
Mirror dokumen pindah kantor: dari work item ke Plane Pages
Halaman API Plane bikin mirror dokumen versi work item terasa salah tempat. Kontrak penyimpanannya berubah, desain identitas mirror ikut dibongkar.
TL;DR: Gue kira tinggal ganti endpoint Pages beres, ternyata kontrak storagenya beda total bikin desain mirror harus dibongkar. Di Pages HTML disimpen verbatim jadi marker bisa ngumpet di komen, kalau update itu ngereplace semua bukan nambahin. Halamannya datar tanpa folder, hapus harus diarsip dulu, dan gambar tetep nangkring di git aja.
#plane#self-hosting#git