Untuk memulai berkontribusi pada repo ini, anda perlu membuat fork repo ini di akun github anda (lihat panduan fork repo).
Setelah itu anda dapat mengikuti beberapa tahap berikut ini:
- Mencari issue yang masih dibuka dan belum di tugaskan (assign) ke orang lain
- Menghubungi / mention admin atau mantainer untuk mengambil issue tersebut
- Membuat branch fitur baru di repo upstream (repo ini) jika belum ada. Misalkan branch
halaman-donasi
untuk branch fitur yang berhubungan dengan halaman donasi - Di repo local anda, buat branch baru dari branch fitur tersebut, nama branch disesuaikan dengan issue / subfitur yang dikerjakan. Contoh nama:
halaman-donasi/daftar-donatur
- Jalankan
git pull upstream halaman-donasi
pada repo fork anda untuk menerapkan perubahan di repo upstream ke repo anda - Anda dapat mulai mengerjakan issue / fitur
Untuk memudahkan proses kolaborasi antar kontributor pada repo ini, kita perlu menerapkan aturan git yang perlu dijadikan pedoman.
Pada repo ini kita akan menggunakan beberapa tipe branch
. diantaranya yaitu:
Tipe | Deskripsi |
---|---|
main |
Branch utama, branch ini perlu dilindungi dan dipastikan tidak ada error |
develop |
Branch pengembangan, fitur-fitur yang sudah selesai dikembangkan akan di merge ke branch ini |
release |
Branch ini digunakan untuk penandaan versi aplikasi yang siap rilis (cth: freeducation-v1 ) |
feature |
Branch yang dibuat setiap ingin mengerjakan fitur baru (cth: halaman-donasi ) |
hotfix |
Branch yang digunakan untuk memperbaiki bug/error/issue yang ada pada kode. Nama branch dapat menggunakan id dari issue yang ingin diselesaikan (cth: hotfix-83 / hotfix-cart-kosong ) |
Sebelum baca ini sebaiknya baca terlebih dahulu bagian persiapan
Berikut ini panduan yang dapat digunakan ketika ingin mengerjakan fitur / sub-fitur.
- Checkout ke branch develop dan sinkronkan local branch dengan update dari upstream
git checkout develop
git pull upstream develop
- Buat branch fitur baru dari branch develop di repo upstream jika belum ada. contoh :
halaman-donasi
- Checkout ke branch fitur di local, jadikan branch fitur di upstream sebagai upstream di branch fitur lokal
// jika branch sudah ada
git checkout halaman-donasi
// jika branch belum ada
git checkout -b halaman donasi
// konfigurasi upstream untuk branch
git branch --set-upstream-to upstream/halaman-donasi
- Buat branch fitur / task dari branch fitur utama. Contoh:
halaman-donasi/progress-donasi
git checkout -b halaman-donasi/progress-donasi
- Jika sudah selesai mengerjakan, push branch lokal ke repo github (hasil fork) anda
git push origin halaman-donasi/progress-donasi
- Buat PR dari branch yang tadi sudah di push di repo github anda ke branch fitur di repo upstream. Jangan lupa tambahkan reviewer. Contoh :
base: Freeducation:halaman-donasi <- <repo-fork>:halaman-donasi/progress-donasi
- Menunggu hasil review
- Jika PR di setujui bisa merge ke branch fitur, gunakan opsi
squash & merge
jika commit anda lebih dari 2. - Jika PR tidak disetujui, perbaiki kode sesuai hasil review di branch lokal anda.
- Jika sudah selesai, push perubahan ke branch di github
- Ulangi hingga PR disetujui
Pesan commit harus memiliki format sebagai berikut:
<tipe>: <deksripsi>
Berikut merupakan tipe-tipe pesan commit yang dapat digunakan:
Tipe | Deskripsi |
---|---|
feat |
Implementasi fitur baru (cth: feat: menambahkan halaman cart ) |
fix |
perbaikan bug / error (e.g. fix: item in card is not showing ) |
docs |
Menambah / memperbarui dokumentasi (e.g. docs: menambahkan file README.md ) |
refactor |
Refactoring kode, mengganti nama variable, menambahkan semikolon, formatting, dsb. (e.g. refactor: mengubah nama fungsi ) |
test |
Menambahkan testing pada kode (e.g. test: menambahkan unit test untuk addItemIntoCart() ) |
chore |
Menambahkan kode yang tidak berhubungan dengan semua tipe diatas. Menata kode, membuat file setup, dsb. (e.g. chore: initiate project ) |
Setiap commit yang menyebabkan aplikasi versi sebelumnya tidak dapat berjalan dengan semestinya (lihat: breaking changes), harus ditambahkan (breaking change)
pada pesan commitnya. Sebagai contoh: refactor (breaking): memindahkan modul cart ke folder components
.
Untuk lebih jelasnya dapat dibaca lagi mengenai ketentuan commit ini di conventional commits