Yang asik dari …

Beberapa hal dari VCS alias Version Control System yang saya rasa lebih asik daripada VCS yang lain (tentu saja yg pernah saya pakai). Hal-hal menarik yg saya tuliskan di sini adalah hal-hal yang sudah saya pakai. Tentu saja masih banyak hal menarik yg belum saya temukan/rasakan. Silakan ditambahkan kalau mau..

Git

  1. Github
  2. Bikin cabang di tempat yang sama! Jadi ngga perlu ganti2 direktori kalau mau bikin/gabung cabang (ref: git branch).
  3. Tidak perlu pusing mikirin perubahan nama berkas. Perubahan nama berkas secara otomatis tercatat.
  4. Bisa nyomot perubahan dalam sebuah commit pada sebuah cabang untuk diterapkan pada cabang yang lain (ref: git cherry-pick).

Daftar akan terus bertambah xD

Bazaar

  1. Launchpad

Duh.. gak kok gak bisa nemuin yang lain =))

Yang pasti, pada dasarnya Distributed VCS >> Centralized VCS.

Subversion

  1. Google Code Hosting
  2. Repositori “parsial”. Direktori apa saja bisa jadi root directory dari sebuah repositori Subversion.

Itu aja kayanya. Saya bukan penggemar VCS yang terpusat lagi =D

Perintah dasar Subversion

Beberapa perintah dasar penggunaan Subversion. Tidak termasuk urusan ngebuat repo subversion.. saya lupa caranya xD

  1. Mengambil cabang subversion ke direktori kerja

    $ svn co http://apalah.ini/trunk/
    
  2. Menambahkan berkas/direktori baru ke dalam repositori

    $ svn add berkas1 berkas2 direktori1 direktori2 ...
    
  3. Setelah mengubah2 isinya, saatnya untuk disimpan.

    $ svn commit
    

    Tulis pesan commit lalu simpan dan keluar dari editor yang muncul. Berhubung Subversion bersifat terpusat, penyimpanan ini juga akan diteruskan ke repositorinya.

  4. Mengambil perubahan terakhir dari repositori.

    $ svn update
    
  5. Menghapus berkas/direktori.

    $ svn rm berkas
    

    Setelah itu dilanjutkan dengan `svn commit` untuk benar-benar menghapus berkas/direktori tersebut.

Apa lagi ya? biasanya saya cuma make 5 itu (kalo gak salah inget). Lagipula, belakangan sudah jarang make Subversion =P

Oh iya.. masalah konvensi. Di Subversion ada konvensi yg berkaitan dg cara pembuatan cabang utama, cabang tambahan, dan tag.

Biasanya, di direktori teratas sebuah repositori Subversion terdapat tiga buah direktori, yaitu trunk, branches, dan tags. Direktori trunk akan berisi cabang utama. Kalau di dunia pengembangan perangkat lunak, direktori trunk ini akan berisi kodingan teranyar, terbaru, paling anget lah pokoknya.

Tuk menandakan sebuah titik revisi tertentu, bisa dibuat sebuah tag. Misalnya saat aplikasi yang dibuat sudah dinyatakan mencapai versi 1.0. Maka sebuah tag dapat dibuat agar revisi tersebut dapat lebih mudah ditemukan.

Cara membuat tag sama seperti melakukan penyalinan direktori biasa.

$ svn cp trunk tags/versi-1.0

Perintah di atas akan menyalin direktori trunk beserta isinya ke tags/versi-1.0.

Tag ini berhubung ditujukan hanya menjadi penanda, maka isi direktori yang berada di bawah direktori tags tidak dimodifikasi lagi.

Lalu bagaimana kalau ingin memodifikasi? Buatlah sebuah cabang alias branch! Caranya ya sama saja dengan cara membuat tag, namun kali ini direktori disalin ke bawah direktori branches.

$ svn cp tags/versi-1.0 branches/versi-1.0

Cabang ini digunakan misalnya pada saat memelihara sebuah versi tertentu. Sebagai contoh andai kita sudah merilis versi 1.0 dari aplikasi yang kita buat dan ingin melanjutkannya dengan menambah fitur-fitur baru dan ditargetkan akan dirilis sebagai versi 2.0. Kodingan menuju versi selanjutnya ini terletak di bawah trunk.

Selain mengerjakan versi selanjutnya, andai kita masih ingin memelihara versi 1.0 yang sudah dirilis tersebut dalam hal memperbaiki bugs yang ditemukan. Proses pemeliharaan ini akan dikerjakan pada kodingan yang berada pada suatu cabang tertentu yang diletakkan di bawah direktori branches. Dengan demikian, ada dua buah cabang yang dikerjakan, yaitu cabang utama yang ada pada trunk dan cabang pemeliharaan versi yang ada di bawah (misalnya) branches/versi-1.0.

Andai kita ingin merilis versi pemeliharaan 1.1, kita juga bisa membuat tagnya agar revisi terkait dapat dengan mudah ditemukan.

$ svn cp branches/versi-1.0 tags/versi-1.1

Kira2 begitu alur kerja di Subversion. Mohon dikoreksi kalau saya salah. Maklum, masalah konvensi ini sebagian besar berasal dari penafsiran saya sendiri. Pernah baca dokumen terkait, namun tidak terlalu detil.