for-real - Ekstensi Chrome pencegah penghapusan yang dibuat setelah tanpa sengaja menghapus seluruh organisasi GitHub
(github.com/bssm-oss)Saat hendak menghapus repo uji, saya malah menghapus seluruh organisasi GitHub berisi 9 orang.
Waktu itu saya sedang menjalankan end-to-end test untuk bot webhook Discord. Karena mengira saya berada di Settings repo uji, saya scroll ke Danger Zone lalu menekan "Delete this repository". Tepat setelah dihapus, halaman yang di-redirect ternyata bukan 404 repo melainkan 404 organisasi, dan saat itulah saya sadar bahwa dari awal saya ternyata berada di Settings organisasi.
Pukulan terakhirnya adalah saya tidak membaca teks konfirmasi dengan benar. Karena yakin yang akan dihapus pasti repo uji, saya langsung copy-paste, padahal yang sebenarnya masuk ke kolom input adalah nama organisasi. Sekali tempel langsung lolos. Repo, issue, PR, diskusi, riwayat CI, semuanya lenyap sekaligus.
Saya langsung mengirim pesan darurat ke rekan tim lewat KakaoTalk dan mengirim email ke tim dukungan GitHub, lalu menunggu 7 hari kerja. Selama itu kami bahkan tidak bisa push ataupun melihat issue.
Tapi makin dipikir, makin terasa aneh.
Baik penghapusan repo maupun penghapusan organisasi punya jalur pemulihan yang sama: "email ke tim dukungan". Padahal organisasi bisa membuat puluhan anggota dan puluhan repo lenyap sekaligus, tetapi UI-nya hanya mendaur ulang flow penghapusan repo, copy-paste tetap bisa, dan tidak ada peringatan soal tingkat destruktifnya. Tombol yang bisa menghapus 100 kali lebih banyak hal dilindungi oleh guardrail yang sama lemahnya.
Karena itu saya membuat for-real.
Saat tombol hapus ditekan pada repo/organisasi yang sudah didaftarkan, klik akan dicegat, dan baru terbuka selama 5 menit jika Anda mengetik sendiri kode acak 20 karakter. Copy-paste diblokir. Kalau memang benar-benar yakin, tinggal ketik saja.
Saya tahu GitHub sudah memberi peringatan lewat Danger Zone. Tapi jika ini bisa mencegah bahkan satu orang saja melakukan kesalahan seperti saya, saya rasa sedikit waktu tambahan itu sangat layak.
Saat ini ekstensi masih dalam proses review Web Store, jadi untuk sekarang hanya bisa dipasang secara unpacked. Panduan pemasangan dan source code ada di repo. Masukan sangat diterima.
10 komentar
Saya pernah dengar cerita tentang seseorang yang saat mau menghapus channel YouTube malah menghapus akun Google-nya (untungnya akhirnya bisa dipulihkan)
Kalau beliau juga punya prosedur seperti ini, apakah tragedi seperti itu bisa dicegah...?
Ternyata orang bisa saja tertukar antara Delete this repository dan Delete this organization ya.
UI Settings ternyata mirip lebih dari yang saya kira, jadi saat lagi agak melamun malah bikin bingung;;
GitHub memang sudah memisahkannya ke Danger Zone, tapi pada akhirnya human error tetap bisa terjadi bahkan di sana,,
Harus hati-hati ya..
https://httpie.io/blog/stardust Dulu juga pernah ada kasus 54k star di-reset karena alasan serupa; saat itu masalah UI juga sempat disorot, dan ternyata itu sudah 4 tahun yang lalu.
Pasti rasanya sangat mengerikan. Keren melihat Anda membagikan pengalaman dan menawarkan solusi untuk mencegah masalah seperti ini.
Saya merasa penghapusan dalam skala besar seperti ini seharusnya punya semacam masa tenggang. Seperti Recycle Bin di komputer, penghapusan sebenarnya sebaiknya dilakukan beberapa hari kemudian, sehingga ada mekanisme untuk memulihkannya kembali.
Waduh, bikin jantung copot..
Sepertinya cukup dengan mencegah copy-paste saja.
Saya juga sempat menghapusnya karena asal copy-paste tanpa pikir panjang.. jadi di proyek ini, copy-paste juga dibuat tidak bisa. Terima kasih sudah membaca.
Terima kasih telah membagikan program yang bagus ini. Akan lebih baik jika pihak GitHub sendiri menunda penghapusan organisasi atau akun sekitar 24–72 jam.