Distributed Version Control System

Wah udah lama saya ngga mengisi blog ini. Saya akan awali lagi mengisi blog ini dengan cerita sedikit mengenai pengalaman saya menggunakan distributed version control system alias DVCS.

Dari sekian DVCS yang ada, saya cuma pernah memakai Bazaar, Git, dan terakhir Mercurial. Saya bisa dibilang sudah meninggalkan Bazaar, yang saya kenal sambil mengembangkan BlankOn, setelah saya mengenal Git. Sejak sekitar dua tahun lalu, saya mencoba menggunakan Mercurial. Sebelum saya menggunakan Bazaar, saya biasanya menggunakan Subversion.

Yang sekarang bisa saya simpulkan mengenai pengalaman saya menggunakan ketiga DVCS ini adalah seperti berikut.

  • Perpindahan dari Subversion ke Bazaar tidak terlalu sulit bagi saya. Saat itu saya hanya perlu tahu konsep repositori lokal, yang secara praktis berarti harus memahami bahwa commit itu hanya akan menyimpan perubahan ke repositori lokal dan push itu dibutuhkan agar perubahan dikirim ke repositori bersama.
  • Saya juga belajar bahwa repositori lokal ini dapat disalin ke direktori lain dan secara otomatis kita akan memiliki sebuah cabang repositori baru.
  • Saat mencoba2 Git, saya menemukan sebuah konsep baru yaitu staging area. Operasi commit pada Git itu hanya akan menyimpan perubahan yang sudah dimasukkan ke dalam staging area. Karena saya masih baru menggunakan Git, perintah git commit -a, yang berarti add dan commit sekaligus, adalah perintah yang saya pakai untuk melakukan commit.
  • Setelah beberapa waktu, saya menemukan operasi commit secara interaktif dengan git commit -i. Saya bisa memilih dulu berkas mana yg ingin saya commit dan mana yg tidak.
  • Selain commit secara interaktif, Git juga memiliki operasi untuk memasukkan berkas ke staging area secara parsial, yang artinya juga kita bisa melakukan commit secara parsial, dengan perintah git add -p. Kita akan dihadapkan dengan pertanyaan bertubi-tubi mengenai setiap perubahan yang kita buat: ingin dimasukkan ke staging area atau tidak.
  • Semakin sering saya menggunakan git add -p semakin paham pula saya apa kegunaan dari staging area dan mengapa ini adalah fitur Git yang sangat powerful yang membedakan Git dengan yang lain
  • Selain ini, saya juga tau bahwa cabang di Git dapat berada di dalam satu buah repositori lokal (alias direktori) yang sama.
  • Setelah saya terbiasa dengan commit parsial, saya mencoba menggunakan Mercurial. Operasi pertama yang saya cari: commit parsial dan pembuatan cabang.
  • Mercurial tidak memiliki staging area sehingga operasi commit akan menyimpan semua perubahan yang dibuat. Sama dengan operasi commit di Bazaar dan bahkan Subversion.
  • Ada pengaya (extension) Mercurial yang dapat membuat kita melakukan commit secara selektif, yaitu Record Extension. Namun walau begitu, ini masih kalah canggih dibanding punyanya Git dalam urusan memilah-milah perubahan.
  • Mercurial memiliki tiga jenis percabangan: cabang dengan nama alias named branch, cabang tanpa nama alias anonymous/unnamed branch, dan bookmark.
  • Cabang dengan nama di Mercurial bersifat permanen: nama cabang akan selalu dibawa ke mana-mana termasuk saat perubahan dikirim ke repositori lain (push).
  • Bookmark adalah jenis cabang di Mercurial yang mirip dengan percabangan di Git.

Kesimpulan lain: Git dapat itu mengubah pikiran dan cara pandang Anda mengenai bagaimana cara menggunakan version control system. Setelah Anda paham mengenai penggunaan Git, maka menggunakan (D)VCS lain itu bisa bikin stres 😛 *kisah nyata*