Version Control System (VCS): Pengertian, Tujuan, Jenis, Cara Kerja, Manfaat, dan Contoh
Table of Contents
Version Control System (VCS) |
Pengertian Version Control System (VCS)
Version Control System (VCS) adalah sebuah kumpulan perangkat lunak yang sudah terintegrasi dan digunakan untuk membantu software engineer mengelola perubahan dalam source code dari waktu ke waktu. VCS merupakan infrastruktur yang dibangun untuk dapat mendukung developing software secara kolaboratif. Setiap orang dalam tim pengembangan software atau aplikasi dapat menulis kode programnya pada masing-masing bagian, kemudian digabungkan ke server yang sudah memiliki VCS aktif. Selain mengandalkan kecepatan pengembangan software, VCS juga mampu memiliki kemampuan untuk kembali (reverse) ke versi pengembangan software sebelumnya.
Kemampuan kembali ke versi sebelumnya ini disebut reversibility. VCS melindungi kode sumber dari kerusakan dan degradasi dari human error dan konsekuensi lainnya yang tidak diinginkan. Selain itu, VCS melacak semua perubahan kode yang dilakukan oleh para engineer dan membantu mencegah terjadinya konflik.
Perubahan pada satu bagian software bisa saja tidak kompatibel dengan yang dibuat oleh developer lain. Masalah ini harus ditemukan dan diselesaikan dengan rapi tanpa menghalangi kepentingan dan pekerjaan anggota tim engineering maupun development lainnya. Intinya, VCS yang berkualitas mampu mendukung alur kerja para engineer tanpa memaksakan satu cara kerja tertentu.
Tujuan Version Control System (VCS)
VCS kadang-kadang juga dikenal sebagai alat Source Code Management (SCM) atau Revision Control System (RCS). Salah satu tools VCS paling populer yang digunakan saat ini disebut Git. Git adalah VCS terdistribusi, kategori yang dikenal sebagai DVCS. Seperti banyak sistem VCS paling populer yang tersedia saat ini, Git adalah gratis dan open source.Version control dan system-nya bertujuan untuk memastikan bahwa perubahan konten yang sedang dikembangkan berjalan sesuai rencana. Sementara version control (kontrol versi) sering dilakukan oleh aplikasi terpisah, itu juga dapat tertanam ke dalam program-program seperti lingkungan pengembangan terintegrasi atau Integrated Development Environment (IDE), text editor, spreadsheet dan, terutama, dokumen dan halaman web kolaboratif.
Version control memungkinkan server di beberapa lokasi menjalankan versi yang berbeda di situs yang berbeda, walaupun versi tersebut sedang diperbarui secara bersamaan. Anda dapat menganggap sistem kontrol versi Version Control System (VCS) sebagai semacam “database (basis data)”. Pada intinya, ini memungkinkan Anda menyimpan snapshot dari proyek lengkap Anda kapan saja Anda mau.
Jenis Version Control System (VCS)
Terdapat beberapa jenis VCS yang sering digunakan oleh para engineer. Tiap jenis memiliki fungsi masing-masing dan biasanya dimanfaatkan sesuai kebutuhan engineer di antaranya,1. Local version control systems
Local version control systems (LCS) merupakan jenis VCS paling sederhana dan memiliki database yang menyimpan semua perubahan pada file. LCS juga merupakan salah satu alat VCS yang paling umum. Sistem ini mampu membuat set patch, atau perbedaan antara file, dalam format khusus pada sebuah disk.
Dengan menambahkan semua patch, LCS dapat menciptakan bentuk orisinal dari semua file ketika seorang engineer atau developer membutuhkannya.
2. Centralized version control systems
CVCS kerap menjadi jembatan kolaborasi di antara para engineer dan developer. CVCS dapat memberikan informasi tentang apa yang dilakukan para engineer dan developer pada sebuah proyek. Hal ini memungkinkan database administrator untuk mengontrol pekerjaan yang harus dilakukan seluruh pihak dalam proyek tanpa terjadinya benturan dan miskomunikasi.
3. Distributed version control systems
DVCS mengandung banyak repositori. Sistem ini mendukung cara kerja di mana tiap pengguna memiliki repositori dan copy dari pekerjaan mereka sendiri. Ketika pengguna melakukan perubahan, DVCS tidak akan memberi orang lain akses ke pada perubahan yang telah dibuat tersebut.
Hal ini karena DVCS akan mencerminkan perubahan tersebut dalam repositori masing-masing pengguna dan mereka perlu mendorongnya agar terlihat pada repositori pusat. Intinya, DVCS mendorong budaya tanggung jawab pada tiap perubahan yang dilakukan masing-masing engineer dan developer.
Cara Kerja Version Control System (VCS)
Version control (kontrol versi) menggunakan repository atau repositori (database perubahan) dan copy (salinan) pekerjaan di mana Anda melakukan pekerjaan Anda. Salinan kerja Anda (kadang-kadang disebut checkout dalam istilah pemrograman) adalah salinan pribadi Anda dari semua file dalam proyek.Anda dapat mengedit salinan tersebut, tanpa memengaruhi rekan satu tim Anda. Saat Anda senang dan puas dengan hasil edit Anda, Anda mengkomit (commit) perubahan Anda ke repositori. Repositori merupakan database dari semua pengeditan untuk, dan atau versi historis (snapshot) dari, proyek Anda.
Repository mungkin berisi suntingan yang belum diterapkan ke copy pekerjaan Anda. Anda dapat memperbarui copy (salinan) pekerjaan Anda untuk memasukkan pengeditan atau versi baru yang telah ditambahkan ke repositori sejak terakhir kali Anda diperbarui.
Dalam kasus yang paling sederhana, database tersebut berisi riwayat atau sejarah linier dari setiap perubahan dilakukan setelah yang sebelumnya. Kemungkinan lain yang dapat terjadi dalam prinsip kerja version control adalah bahwa pengguna yang berbeda dapat melakukan pengeditan secara bersamaan (ini disebut dengan branch dalam programming).
Dalam hal itu, riwayat versi terpecah dan kemudian bergabung lagi.
Manfaat Version Control System (VCS)
Mengembangkan perangkat lunak tanpa menggunakan version control (kontrol versi) terbilang berisiko, itu sama saja seperti tidak memiliki cadangan.Version control system juga dapat memungkinkan pengembang untuk bergerak lebih cepat dan memungkinkan tim perangkat lunak untuk menjaga efisiensi dan ketangkasan saat tim berskala untuk memasukkan lebih banyak pengembang.
Terlepas dari sistem mana yang digunakan, adapun manfaat utama yang dapat Anda dapatkan dari version control atau kontrol versi di antaranya,
1. Riwayat Perubahan Jangka Panjang
Manfaat yang pertama adalah histori atau riwayat perubahan jangka panjang yang lengkap untuk setiap file. Ini berarti setiap perubahan yang dilakukan oleh banyak individu selama bertahun-tahun. Perubahan mencakup pembuatan dan penghapusan file serta pengeditan kontennya.
Tools (alat) VCS yang berbeda berbeda pada seberapa baik mereka menangani penggantian nama dan pemindahan file. Sejarah ini juga harus mencakup penulis, tanggal dan catatan tertulis tentang tujuan setiap perubahan.
Memiliki riwayat lengkap memungkinkan kembali ke versi sebelumnya untuk membantu dalam analisis penyebab utama untuk bug dan sangat penting ketika perlu memperbaiki masalah di versi perangkat lunak yang lebih lama. Jika perangkat lunak sedang dikerjakan secara aktif, hampir semuanya dapat dianggap sebagai “versi lama” dari perangkat lunak atau Software.
2. Branching dan Merging
Berikutnya adalah percabangan atau branching dan merging (penggabungan), memiliki anggota tim yang bekerja secara bersamaan merupakan hal yang tidak perlu. Bahkan individu yang bekerja sendiri dapat mengambil manfaat dari kemampuan untuk bekerja pada aliran perubahan yang independen.
Membuat “branch” pada alat VCS dapat menjaga aliran beberapa pekerjaan independen satu sama lain sementara juga menyediakan fasilitas untuk menggabungkan pekerjaan itu kembali bersama. Hal ini memungkinkan developers (pengembang) untuk memverifikasi bahwa perubahan pada setiap cabangnya tidak bertentangan.
Banyak tim perangkat lunak mengadopsi praktik percabangan untuk setiap fitur atau mungkin percabangan untuk setiap rilis, atau keduanya. Ada banyak alur kerja berbeda yang dapat dipilih tim saat mereka memutuskan bagaimana memanfaatkan fasilitas percabangan dan penggabungan dalam VCS.
3. Traceability
Manfaatnya yang terakhir yaitu adalah ketertelusuran atau traceability. Version control mampu melacak setiap perubahan yang dilakukan pada perangkat lunak dan menghubungkannya ke manajemen proyek dan perangkat lunak pelacakan bug seperti Jira.
Selain itu, mereka juga mampu membuat anotasi setiap perubahan dengan pesan yang menjelaskan tujuan dan maksud perubahan tersebut dapat membantu tidak hanya dengan analisis akar penyebab dan forensik lainnya.
Memiliki riwayat kode yang beranotasi di ujung jari Anda ketika Anda membaca kode, mencoba memahami apa yang dilakukannya dan mengapa kode tersebut dirancang dapat memungkinkan pengembang membuat perubahan yang benar dan harmonis yang sesuai dengan desain jangka panjang yang dimaksudkan.
Dari sistem sendiri, ini bisa menjadi hal yang sangat penting terutama untuk bekerja secara efektif dengan kode jadul (lawas) dan memungkinkan pengembang untuk memperkirakan pekerjaan di masa depan dengan akurasi apa pun.
Contoh Version Control System (VCS)
Version contol system merupakan sistem manajemen proses yang mempertahankan perubahan yang direkam dalam file atau set file selama periode waktu tertentu. Setiap perubahan dipertahankan sebagai version (versi), adapun beberapa contoh sistem kontrol versi atau control version systems yang paling banyak digunakan adalah sebagai berikut.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 di antaranya,
1. Bazaar
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
2. Subversion (SVN)
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
3. Mercurial
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
4. CVS
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
5. RCS
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
6. Perforce
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.
7. ClearCase
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.
8. GNU Arch
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
9. GNU CSSC
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. 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.
Dari berbagai sumber
Post a Comment