Kali ini, saya mencoba untuk berbagi ilmu praktis dalam mendesain sebuah Printed Circuit Board (PCB). Pada kasus ini, saya menggunakan perangkat lunak KiCad, karena hasil file yang di-generate oleh KiCad berbasis teks, sehingga memungkinkan untuk melakukan tracking perubahan menggunakan Git.
Sedikit memberikan latar belakang alasan mengapa saya mulai menggunakan version control. Jadi, beberapa tahun lalu, saya sempat penasaran bagaimana sebuah source code software yang menjelimet itu di-track tiap perubahannya. Walau bukan berasal dari background software, saya coba minta diajari teman soal Git, sekadar memuaskan rasa penasaran — waktu itu sih, agak gak mudeng jadinya, karena rasanya ilmu itu belum relevan.
Seiring waktu berjalan, proyek PCB yang saya kerjakan tambah banyak, timbul banyak masalah baru pula: file hilang, lupa versi tiap desain, PCB versi A dengan versi B perbedaannya apa, dlsb. Bersyukur pernah terekspos pengetahuan soal Git, akhirnya saya menemukan kasus nyata, di mana saya bisa mengimplementasikan Git version control ke kerjaan saya.
Sebagai pembuka apa itu Git, mungkin tidak perlu menjelaskan dua kali ya, karena penjelasannya juga sudah bertebaran di mana-mana, salah satu referensi yang menurut saya bagus bisa dilihat pada video Youtube di sini: 1.1: Introduction — Git and GitHub for Poets.
Mengapa desain PCB perlu version control?
- Semua pekerjaan perlu ada di satu tempat yang aman, rapi, dan terorganisir.
- Dapat menyimpan dan memberikan deskripsi apa, siapa, dan kapan perubahan dilakukan pada desain.
- Mengembalikan desain ke perubahan sebelumnya jikalau ada kesalahan.
- Memudahkan kolaborasi dalam tim. Seperti: review desain, pengerjaan desain berbeda dalam satu waktu menggunakan teknik branching.
- Memungkinkan eksplorasi desain tanpa mengubah desain yang sudah ada dengan branching.
Instalasi Git
Untuk pengguna Linux dan macOS, biasanya sudah terinstal Git secara bawaan. Namun jika belum, bisa mengunduh Git pada tautan berikut https://git-scm.com/downloads.
Setelah file instalasi Git terunduh, silakan instal dan ikuti saja pengaturan bawaan.
Tip: Untuk pengguna Windows yang menggunakan sistem WSL, disarankan untuk tetap menggunakan Git berbasis Windows, kalian bisa menambahkan alias untuk Git pada file bash profil dengan me-refer git.exe pada direktori Windows di mana Git diinstal.
Setelah proses instalasi selesai, ketikan git --version
pada konsol terminal (Git Bash untuk Windows) untuk memastikan bahwa Git sudah terinstal.
Step-by-step penggunaan Git (local repository)
- Pada terminal, pergi ke folder proyek. Atau bisa melakukan tindakan sebagai berikut pada gambar:
- Pada konsol, ketikkan
git init
untuk menginisiasi bahwa folder tesebut akan di-track oleh Git sebagai local repository.
- Setelah inisiasi, ketikkan
git status
. Nah, nanti akan muncul nama file dengan tulisan berwarna merah, tandanya file siap untuk masuk tahap staging.
- Lakukan
git add -A
ataugit add .
untuk menyertakan semua file ke tahap staging. Cek kembali status dengangit status
untuk memastikan file sudah masuk staging. Jika sudah, warna teks akan berubah menjadi hijau.
- Lalu
git commit -m "commit message"
, tahap ini seperti melakukan saving file ke Git. Nah dengan message ini kalian bisa tahu pada setiap save yang dilakukan, dan perubahannya apa.
- Sampai sini sesungguhnya kita sudah melakukan version control. Ulangi langkah-langkah di atas setiap kalian melakukan perubahan.
- Coba masukkan
git log
maka akan muncul semua commit yang pernah kalian lakukan.
- Pada log di atas, setiap commit memiliki hash value yang bisa digunakan untuk lompat ke commit yang kita inginkan. Lakukan
git checkout hash-value
. Jangan kaget ya kalau file yang ada dalam proyek kalian berubah, mereka semua sudah kembali ke commit sebelumnya.
- Kalau kita misal mau melakukan eksperimen tanpa merusak desain yang sudah ada, bagaimana? Karena Git tidak menghapus commit yang kita tinggalkan di depan, alternatifnya Git membuat cabang baru, jadi commit kita tidak terganggu gugat. Lakukan
git checkout -b branch-name
- Untuk kembali ke perubahan terakhir kalian, bisa langsung melakukan
git checkout main
Step-by-step penggunaan Git (online repository, eg: Github, Gitlab, Bitbucket)
Belum cukup di local repository? Kaita bisa mengunggah file PCB ke server, dalam kasus ini saya menggunakan github.com. Tujuannya agar memudahkan kita berkolaborasi, sekaligus sebagai backup file proyek kita.
- Jika belum punya akun Github, kalian bisa sign-up terlebih dahulu. Kalau sudah, buat projek baru di Github.
- Lakukan konfigurasi Git, kalian bisa mengikuti panduan pada tautan berikut https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration.
- Kemudian set remote setting, kalian bisa ikuti langkah-langkah yang ditampilkan pada layar awal proyek kalian di Github.
git remote add origin [https://github.com/dongotawwa/microsdcard_module.git](https://github.com/dongotawwa/microsdcard_module.git)
git branch -M main
git push -u origin main
- Jika kalian mengerjakan proyek lebih dari satu orang, pastikan setiap kali kalian memodifikasi desain lakukan dulu
git pull
kalau-kalau teman kalian membuat perubahan, jadi kalian tidak akan membuat branch yang tidak diinginkan. - Lakukan
git fetch
untuk mensinkronisasi lokal dan online repository.
Bonus: Visual version control menggunakan CADLAB.io
Ini adalah tool yang baru-baru saja saya temukan, yang sangat berguna dalam proses development hardware. Silakan kunjungi https://cadlab.io/features untuk melihat fitur-fitur yang ditawarkan tool ini. Ada 3 fitur utama yang saya rasa sangat membantu:
- Integrasi dengan Github dan Gitlab, sayangnya integrasi dengan Bitbucket masih dalam tahap pengembangan. Dengan fitur ini, kita bisa meng-impor proyek yang sudah ada tanpa perlu membuat repositori baru.
- Schematic and PCB layout rendering, memudahkan review desain karena kita bisa langsung membuka desain langsung dari halaman repositori.
- Visual Diff, memungkinkan kita untuk membandingkan perbedaan desain secara visual dari tiap commit yang ada.
Perlu diingat, tool ini berbayar, maka dari itu saya hanya memberikan bagian ini sebagai bonus. Tetapi kalau kalian mau coba, CADLAB.io memberikan paket open-source gratis, namun terbatas untuk hanya membuat 3 proyek private, dan tidak bisa berkolaborasi untuk proyek private.
Tidak dipungkiri semakin banyak desain dan perubahan pada desain PCB kita, semakin kompleks pula penanganannya, sehingga memerlukan sistem yang lebih baik untuk mengoptimalkan workflow mendesain. Version control, saya temukan sangat bermanfaat untuk memuluskan jalan demi mempercepat hardware development agar dapat segera menghasilkan produk yang bisa terjun ke pasar.
Masih banyak yang bisa dieksplorasi dari kemungkinan lain yang ditimbulkan dari version control PCB ini. Sedikit spoiler, saya masih belum membahas hal-hal seperti tagging, managing issues, access control, dlsb. Saya akan coba megover hal tersebut pada kesempatan lain.
Semoga bermanfaat, yok, langsung dicoba!