Code Repository
Nama Repository
Developer sering melihat project lama sebagai referensi saat mengerjakan project baru yang mirip. Karena itu repository harus mudah dicari dari namanya, jelas, dan menjelaskan dirinya sendiri.
Konvensi
- Semua huruf kecil
- Memakai kebab case, dengan tanda hubung (
-). Benar:nac-pholivery. Salah:nac_pholiveryatauNAC-Pholivery - Untuk repository project dari klien yang berulang, awali dengan kode singkat nama klien yang sudah dikenal, misalnya
bsifuntuk Bank Syariah Indonesia Finance,bcaduntuk BCA Digital, dan seterusnya. Kode ini harus sama dengan kode klien di CRM. - Bagian kedua adalah kode nama project yang sudah dikenal. Contoh
online-galleriesuntuk Online Galleries,emeteraiuntuk aplikasi E-Meterai, dan seterusnya. Sama seperti di atas, ini harus sama dengan kode klien di CRM. - Bagian berikutnya adalah bagian project yang lebih spesifik. Contoh
backenduntuk bagian Backend,frontenduntuk bagian aplikasi web,mobileuntuk aplikasi mobile yang dibuat dengan framework hybrid seperti Flutter atau React Native,androiddaniosmasing-masing untuk aplikasi mobile native.
Deskripsi Repository
Nama repository terbatas jumlah karakternya (maksimal 40 karakter di Github), jadi deskripsi (atau Project Description di Gitlab) adalah cara terbaik untuk menjelaskan repository secara singkat, dan tetap bisa dicari serta muncul di hasil pencarian.
Konvensi
- Minimal menjelaskan nama repository. Contoh, deskripsi untuk repository
bcaf-emeterai-backendminimal ditulis "BCA Finance E-Meterai Backend", supaya kita tahubcafitu singkatan dari apa. - Memuat teknologi atau framework utama yang dipakai. Contoh, "BCA Finance Virtual Mall Backend Using Spring Boot", supaya kita mudah mencari repository berdasarkan framework atau teknologi besar seperti Spring Boot, Laravel, Angular JS, Flutter, dan lainnya.
- Bila perlu, tulis bahasa pemrograman yang dipakai sebagai pembeda. Contoh tulis Kotlin untuk membedakan dengan project lain yang memakai Java, atau tulis Swift untuk membedakan dengan project lain yang memakai Objective C.
README
Sesuai namanya, README adalah dokumen pertama yang diminta untuk dibaca sebelum orang menelusuri file source code. Kebanyakan source control menaruh README sebagai halaman depan repository. README harus menjelaskan isi repository dengan jelas dan mudah diikuti.
Konvensi
- Memuat gambaran umum atau informasi umum tentang project
- Memuat teknologi yang dipakai
- Memuat instruksi setup, terutama setup development untuk developer lain
- Boleh ditambah screenshot atau diagram arsitektur
Nama Branch
Git memberi strategi branching yang fleksibel dan sangat berguna untuk kolaborasi serta otomasi CI/CD. Namun tanpa konvensi penamaan yang tepat, hasilnya membingungkan dan membuat perawatan kode jadi rumit.
Konvensi
Secara umum ada dua jenis branch: Regular & Temporary Branch.
Regular Git Branch
Branch jenis ini ada secara permanen di dalam repository.
mainadalah branch utama dan dipakai untuk production. Branch ini harus selalu stabil dan tidak boleh menerima commit langsung. Perubahan di branch ini HANYA boleh masuk lewat merge dari regular branch lain sepertistaging.stagingberisi seluruh kode untuk QA, user testing, atau automation testing dari semua perubahan yang sudah dikerjakan. Sebelum masuk ke environment production, setiap perubahan wajib melewati branch ini.developmentadalah branch development utama. Di sinilah semua developer berkontribusi ke project, dengan commit langsung atau lewat Pull Request (PR). Cara kedua lebih disarankan.
Kalau memang perlu, boleh ada Git branch tambahan yang disimpan permanen di repository. Contohnya untuk menandai milestone tertentu (misal: sprint), atau environment dan arsitektur yang berbeda (misal: versi OS). Beberapa konvensi yang harus diikuti:
- buat sesingkat mungkin:
ubuntu20bukanfor_server_with_ubuntu_version_20 - pakai garis bawah sebagai pemisah:
multi_modulebukanmulti module. Hanya di bagian ini standar memakai garis bawah. Nama repository dan temporary branch memakai tanda hubung - tanya diri sendiri apakah branch ini memang perlu disimpan permanen, kalau tidak pakai temporary git branch
Temporary Git Branch
Sesuai namanya, branch jenis ini bisa dibuat dan dihapus sesuai kebutuhan. Temporary Git branch juga dipakai developer untuk mengerjakan task tertentu yang diberikan kepadanya, yang nanti di-merge ke branch utama.
Untuk penamaan, pakai format berikut,
group/descriptiongroup dipakai untuk mengelompokkan branch berdasarkan tujuannya, yaitu:
fixuntuk Bug Fix Branch: berisi perbaikan bug yang sudah diketahui atau temuan QAhotfixuntuk Hot Fix Branch: berisi perbaikan mendesak, biasanya perubahan kecil dan langsung untuk memperbaiki masalah di production, karena itu sifatnya mendesakfeatuntuk Feature Branch: fitur baru yang nantinya di-merge ke regular branchdocsuntuk Documentation Branch: berisi perubahan dokumentasi saja, tanpa perubahan kodechoreuntuk Chore Branch: berisi perubahan yang tidak terlihat oleh user luar, misalnya tooling, konfigurasi build, atau perapian repositoryexperimentuntuk Experimental Branch: berisi kode percobaan dengan library, arsitektur, tools, dan lainnya yang perlu dibagikan ke orang lainwipuntuk WIP (Work In Progress) Branch: berisi pekerjaan yang belum akan selesai dalam waktu dekat atau perlu dilanjutkan orang lain
Pakai bentuk singkat persis seperti tertulis di atas. Nama group-nya feat, bukan feature, dan fix, bukan bugfix. Branch lama yang dibuat sebelum ini ditetapkan memakai bentuk panjang; biarkan saja, dan mulai sekarang pakai bentuk singkatnya.
description menjelaskan branch dengan konvensi berikut:
- pakai huruf kecil semua:
fix/loginbukanFix/Login - pakai kata benda:
feat/ldap-integrationbukanfeat/integrates-ldap - pakai tanda hubung (
-) sebagai pemisah:wip/payment-gatewaybukanwip/payment gateway - kalau terkait task tertentu di JIRA atau tool project management lain, tulis nomor issue-nya tepat setelah group:
feat/PHOL-19-clear-logo, dalam hal ini nomor issue ditulis huruf besar dan itu tidak masalah. Boleh dihilangkan hanya kalau memang tidak ada task-nya - lihat halaman Git Workflow untuk kapan branch itu dibuat, dibuat dari mana, dan bagaimana nanti di-merge.