Version Control System (VCS) adalah sebuah infrastruktur yang dapat mendukung pengembangan software secara kolaboratif. Setiap anggota yang berada di dalam sebuah tim pengembangan software dapat menulis kode programnya masing - masing kemudian digabungkan ke server yang sudah memiliki VCS yang digunakan.
Selain mengandalkan konkurensi yang dapat mempercepat pengembangan software, VCS juga mempunyai kemampuan untuk kembali ke versi software sebelumnya jika terjadi suatu bencana terhadap versi software yang sedang dikembangkan saat ini. Kemampuan ini disebut reversibility. Selain itu, dengan menggunakan VCS setiap perubahan pada software seperti penambahan file atau pengubahan isi file dapat dipantau bagian mana yang diubah dan siapa yang mengubah. Sehingga pengerjaan software akan lebih transparan dan terukur.
Tentunya VCS ini tidak didominasi oleh satu jenis produk saja. Ada berbagai jenis VCS yang bersifat free open source software dan ada juga yang proprietary. Mau tahu apa saja VCS yang ada di dunia persilatan? berikut daftar VCS yang perlu dikenal oleh programmer seperti Anda:
Bazaar merupakan bagian dari GNU Project, Bazaar adalah free software yang disponsori oleh Canonical. Salah satu layanan yang menggunakan Bazaar adalah Launchpad, sebuah tempat dimana aplikasi Ubuntu dikembangkan dan dipantau oleh komunitas. Bazaar dapat digunakan di Windows, Ubuntu, Debian, Red Hat, SUSE, OS X, FreeBSD, Solaris, Gentoo, dan lainnya.
Bazaar memiliki versi GUI yang dapat memudahkan pengguna, Anda dapat bekerja secara offline dengan menggunakan Bazaar, mempunyai sistem any workflow, gatekeeper workflow, dan centralized workflow, mempunyai fitur rename tracking dan smart merging, dan kecepatan dan efisiensi penyimpanan yang sangat tinggi. Saat ini Bazaar berada di versi 2.6.0
contoh penggunaan Bazaar (dikutip dari Dokumentasi Bazaar):
$ bzr init-repo sample
Shared repository with trees (format: 2a)
Location:
shared repository: sample
$ bzr init sample/trunk
$ cd sample/trunk
Created a repository tree (format: 2a)
Using shared repository: /home/john/sample/
SVN adalah free VCS yang didesain mirip dengan CVS dan lebih sederhana. SVN mendukung atomic commits dari sebuah file dan melakukan versioning terhadap direktori, symbolic links, dan meta-data. Selain itu mendukung versioning terhadap penamaan, penyalinan, dan penghapusan suatu file atau direktori.
SVN merupakan bagian dari Apache Software Foundation. SVN bersifat open source yang didirikan pada tahun 2000 oleh CollabNet Inc. SVN dinikmati luas oleh kalangan komunitas ataupun enterprise. SVN tersedia untuk Linux, OS X, FreeBSD, dan Windows. Saat ini SVN berada di versi 1.8.9
contoh penggunaan SVN (dikutip dari SVN Book):
$ svn checkout https://svn.example.com/svn/repo/trunk
A trunk/README
A trunk/INSTALL
A trunk/src/main.c
A trunk/src/header.h
…
Checked out revision 8810.
$
Mercurial atau yang biasa disingkat menjadi Hg. Mercurial adalah VCS yang free. Mercurial memiliki konsep distributed source control management tool. Mercurial efisien untuk menangani proyek yang memiliki bermacam ukuran dan jenis. Mercurial mendukung berbagai workflow. Dan setiap Anda melakukan kloning sebuah proyek dengan Mercurial, seluruh riwayat proyek akan disalin.
Mercurial dapat digunakan di Windows, OS X, Linux, dan varian Unix lainnya. Mercurial memiliki guide yang dapat mempermudah pengguna baru untuk langsung produktif dengan menggunakan Mercurial. Saat ini Mercurial berada di versi 3.1-rc
contoh penggunaan Mercurial (dikutip dari Homepage Mercurial):
$ hg clone https://selenic.com/repo/hello
$ cd hello
$ (edit files)
$ hg add (new files)
$ hg commit -m 'My changes'
$ hg push
CVS adalah free VCS yang digunakan oleh mayoritas proyek free software. Saat ini CVS perlahan mulai tergantikan oleh sistem VCS lain yang lebih baru. CVS mendukung pengembangan konkuren oleh banyak pengembang baik secara lokal atau diatas jaringan. CVS sangat kurang mendukung untuk atomic commits dan pemindahan / penamaan ulang file.
Dengan menggunakan VS Anda dapat merekam riwayat dari file dan dokumen. CVS mendukung unreserved checkouts yaitu lebih dari satu pengembang dapat mengerjakan file yang sama secara bersamaan. CVS Server dapat berjalan di berbagai varian Unix dan CVS Client dapat berjalan di Windows dan varian Unix. Terkadang CVS dapat melakukan server mode di sisi client. Saat ini CVS berada di versi 1.11.23
contoh penggunaan CVS (dikutip dari Dokumentasi CVS):
$ mkdir -p foo/bar
$ cp ~/myfile foo/bar/myfile
$ cvs add foo foo/bar
$ cvs add foo/bar/myfile
Revision Control System atau RCS mampu mengelola revisi dari banyak file. RCS mengotomasi penyimpanan, pengambilan, pencatatan, pemeriksaan, dan penggabungan dari sebuah revisi. RCS berguna untuk teks yang sering direvisi seperti source code, program, dokumentasi, grafik, jurnal, dan surat.
RCS pertama kali dikembangkan oleh Walter F. Tichy di Purdue University pada awal 1980. RCS didesain dengan lebih unggul dibandingkan pendahulunya yaitu Source Code Control System (SCCS). Peningkatan RCS dibandingkan SCCS diantaranya adalah antar muka yang lebih mudah dan pengambilan yang lebih cepat dari penyimpanan. RCS menggunakan GNU Diffutils untuk melihat perbedaan diantara dua versi yang berbeda. Saat ini RCS berada di versi 5.9.2
contoh penggunaan RCS (dikutip dari Dokumentasi RCS):
$ whoami
ttn
$ co -l -f z
RCS/z,v --> z
revision 1.1 (locked)
done
$ co -S -l -f z
RCS/z,v --> z
co: RCS/z,v: Revision 1.1 is already locked by ttn.
VCS yang satu ini bersifat proprietary dan berbayar jika Anda ingin menggunakannya untuk lebih dari 20 pengembang. Jika menggunakannya untuk 20 pengembang Anda akan mendapatkan Perforce secara free.
Perforce memiliki keunggulan dengan sebuah sistem yang dinamakan Continous Delivery. Dengan menggunakan disiplin tersebut software dapat dirilis menjadi production kapanpun. Perforce ini dipercaya oleh vendor - vendor besar seperti Netflix, Samsung, Salesforce, dan New York Stock Exchange.
Perforce memiliki keunggulan seperti massive scalability, hybrid version control, social coding, large binaries, dan unified security. Perforce dapat digunakan di Linux, varian Unix, OS X, dan Windows. Saat ini Perforce berada di versi 2014.1 untuk versi Free.
contoh penggunaan Perforce (dikutip dari Dokumentasi Perforce):
p4 sync //depot/Misc/manuals/...#head
//depot/Misc/manuals/recommended_configuration.doc added c:p4clientsruno-1492Miscmanuals
ecommended_configuration.doc
//depot/Misc/manuals/triggers.doc added c:p4clientsruno-1492Miscmanuals riggers.doc
//depot/Misc/manuals/vendor_branches.doc added c:p4clientsruno-1492Miscmanualsvendor_branches.doc
Sync copied 3 files to workspace (including 3 that were added)
Sync removed no files from workspace
Sync completed with no warnings or errors.
p4 edit //bruno-1492/Misc/manuals/recommended_configuration.doc
//depot/Misc/manuals/recommended_configuration.doc#1 - opened for edit
Opened 1 files for edit
p4 revert //depot/Misc/manuals/recommended_configuration.doc
revert complete. 1 file affected.
VCS yang ini juga merupakan VCS proprietary dan berbayar. Harga lisensi untuk penggunanya dalah $ 5.500. Mantap kan harganya?. IBM Rational ClearCase ini mendukung untuk version control, workspace management, parallel development support, dan auditing.
Tentunya ClearCase ini dapat diintegrasikan dengan produk IBM lainnya, misal WebSphere. Selain itu ClearCase memiliki effective IP security yang menjamin source code yang ditulis akan aman dari kontrol yang tidak diizinkan.
contoh penggunaan ClearCase (dikutip dariDokumentasi ClearCase):
cleartool checkout –nc file1.txt
cleartool: Error: Unable to perform operation "checkout" in replica
"lexington" of VOB "/vobs/dev".
cleartool: Error: Master replica of branch "/main" is "london".
cleartool: Error: Unable to check out "file1.txt".
cmd-context: deliver –complete
Resume deliver
FROM: stream "chris_webo_dev"
TO: stream "integration"
Using integration view: "webo_integ".
Do you wish to continue with this deliver operation? [no] yes
Are you sure you want to complete this deliver operation? [no] yes
Deliver has completed
FROM: stream "chris_webo_dev"
TO: stream "integration"
Using integration view: "webo_integ".
GNU Arch adalah salah satu decentralized version control system yang paling awal. Hanya saja saat ini Arch mulai kurang aktif dikembangkan. GNU Arch murah dan mudah untuk dikelola, dan tidak perlu memberikan permisi untuk setiap peserta proyek. Mempunyai fitur branching dan merging yang siap memudahkan tim yang mengembangkan free software.
Menurut halaman resminya GNU Arch ini digunakan untuk membantu pengembangan free software. Disarankan bagi yang menggunakan CVS atau sistem lainnya untuk bermigrasi ke GNU Arch. GNU Arch dibuat dan dikelola oleh Tom Lord. Saat ini GNU Arch berada di versi 1.3.5
contoh penggunaan GNU Arch (dikutip dari Halaman GNU Arch):
cd your_work_directory
tla register-archive https://www.atai.org/archarchives/lord@emf.net--2005-MIRROR/
tla register-archive https://www.atai.org/archarchives/atai@atai.org--public/
tla get tla--atai-dists--1.3.4 tlasrc
cd tlasrc
tla build-config config
CSSC merupakan proyek dari GNU Project yang menggantikan SCCS. SCCS adalah VCS yang bersifat proprietary yang tersedia untuk versi komersial dari Unix. GNU CSSC ini dikembangkan sebagai versi free untuk Unix. Dengan menggunakan CSSC, sebuah proyek dapat dikontrol menggunakan sistem lain seperti Git atau SVN. Saat ini GNU CSSC berada di versi 1.3.0
contoh penggunaan GNU CSSC (dikutip dari Dokumentasi GNU CSSC):
prs s.myfile.c
prs SCCS
prs -e -d:P: s.main.c | sort -u
prs -l -c`date +%y%m%d --date "last week"` SCCS
Git merupakan VCS yang dikembangkan oleh Linux Torvald ketika mengembangkan Linux (kernel). Git merupakan decentralized version control system. Git mempunyai keunggulan seperti repository syncing, bekerja secara offline, cheap local branching, staging area yang nyaman, mampu menangani proyek besar seperti Kernel Linux secara efektif dalam hal kecepatan dan ukuran data, mendukung non-linear development, dan multiple workflow. Selain itu Git digunakan di berbagai layanan VCS seperti Github, Bitbucket, Assembla, dan Gitorious
contoh penggunaan Git (dikutip dari Dokumentasi Git):
$ git init
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
$ git push origin master
(rfs/gnu/ibm/perforce)