Git, hg, dan Versioning

Fajran alias iang suka memprovokasi orang-orang untuk menggunakan git sebagai versioning control systems (vcs). Postingnya yang terakhir membuat saya tergelitik berkomentar di sana, dengan pengalaman di vcs yang sedikit ya tidak apa-apa lah :D

Saya sebelumnya bukan orang yang sering bermain dengan vcs, paling juga cuma checkout di svn di proyek-proyek PLBOS tertentu dan code.google-nya kuliax. Kalo sekarang gimana? masih sedikit juga pengalamannya. Tiga bulan ini sih coba menggunakan distributed vcs (dvcs) untuk mengatur berkas-berkas proyek yang dikerjakan. Biasa, kerjaan penjual rujak.

Pilihan langsung tertuju ke dua dvcs yaitu git dan mercurial aka hg. Langsung saja saya bandingkan fitur-fitur sederhana yang digunakan oleh pengembang serabutan seperti saya seperti clone, add, rm, status, diff, parents, pull, merge, commit, tip, log, glog, dst. Akhirnya, saya pikir hg lebih sederhana dan berjalan sesuai dengan kebutuhan (sekarang).

Berikut catatan-catatan kecil saya tentang git, hg, dan versioning:

  • jika git-core kita pasang, maka kita akan mendapatkan puluhan git-bla, hg sendiri hanya menyediakan satu buah executable saja!
  • git dan hg dirancang sesuai dengan kebutuhan dari pengembangnya, alur pengembangan dan skala proyek tersebut. git pada awalnya digunakan di pengembangan kernel Linux dan tentu sesuai dengan kebutuhan proyek tersebut
  • sebagai pengembang dengan skala proyek yang kecil, hg lebih membantu, paling tidak dalam menyederhanakan perintah dan operasi
  • yang penting dalam penggunaan vcs sebenarnya adalah bagaimana vcs itu membantu pengembangan kita agar lancar dan diatur dengan baik, bukan cuma keren-kerenan
  • nantinya kita perlu merancang dan mengimplementasikan alur pengembangan sesuai dengan vcs yang kita pakai, misal bagaimana distribusi repo kode dan berkas, merge, bagaimana agar banyak repo tetap sinkron, dst.
  • untuk pengguna dvcs awal seperti saya, cara paling mudah adalah dengan menggunakan satu repo master yang isinya di-clone ke mesin-mesin pengembang, jika sudah puas dengan hasil di repo lokal atau istilahnya branch, kita bisa push hasil commit repo lokal ke repo master
  • semakin proyek kita berkembang dan pengembang sudah cukup banyak, kita pelan-pelan akan mengubah alur pengembangan. Misal antara pengembang bisa saling melakukan clone repo masing-masing untuk mendapatkan fitur yang sedang dikembangkan dan melakukan merge. Jika sudah puas, salah satu pengembang yang cukup matang kode dan hasilnya bisa mem-push-nya ke repo master agar dapat diakses oleh anggota tim yang lain
  • pengguna dvcs awal seperti saya sempat pusing karena alur yang kacau kesana-kemari, clone sini-sana, push sini-sana, merge, push lagi, dst, agar sinkronisasi berjalan dengan baik di banyak mesin dan harapan otomatisasi, juga kasus konflik saat merge serta keharusan untuk melayani permintaan versi terbaru di repo master, padahal hasil commit repo lokal belum di-push ke sana.

Ok, agar lebih sederhana catatan di atas saya simpulkan menjadi tiga poin saja:

penggunaan sesuatu yang baru akan selalu mengubah budaya dan alur kerja kita

gunakan dvcs yang menurut kita nyaman dan mudah digunakan, sesuaikan dengan kebutuhan dan skala proyek

seiring dengan berkembangnya proyek, kita akan belajar untuk mengadaptasi alur pengembangan yang melibatkan dvcs dengan lebih baik, termasuk mengganti dvcs jika dibutuhkan

Sebagai penutup, kutipan dari artikel oleh Patrick Thomson tentang dua dvcs ini menarik:

git vs hg itu seperti macgyver vs jamesbond

dan terpenting dari yang paling penting:

Shut up about the tools you use and write some code.

Salam,

Penjual rujak cupu skala kaki lima

Iklan

One thought on “Git, hg, dan Versioning

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s