Version Control System (VCS)

muhammad yusuf
5 min readJun 7, 2021

--

Photo by Yancy Min on Unsplash

Sebagian dari kita pastinya sudah tau dong apa itu VCS? yah benar Version Control System, hayoo.. mikir kemana dulu kalian tadi ? :)

Bagi mereka yang menekuni dunia software development Version control adalah alat yang wajib untuk dikuasai, mengapa? karena alat ini dirancang agar para enginer dapat mengurangi risiko kegagalan pada data-data yang telah dimodifikasi.

Memahami apa itu Version Control ?

Dikuti dari Atlassian

Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.

Sebagaimana kutipan diatas, version control merupakan sebuah sistem yang dapat merekam perubahan-perubahan dari source code dari waktu ke waktu sehingga developer dapat menilik kembali versi khusus suatu saat nanti.

Version control sistem ini mampu melacak setiap modifikasi source code dalam seluruh jenis database perusahaan, jika sistem ini menemukan kesalahan engineer dapat membandingkan source code dari versi sebelumnya dan mulai memperbaiki kekeliruan tersebut.

Karena sistem pelacakan yang akurat, version control system dapat mengurangi gangguan serta kesalahan pada kinerja semua anggota tim engineering.

Dalam hampir semua software project, source code adalah sebuah aset berharga yang harus dilindungi.

Mengapa demikian? Pasalnya, sebagian besar tim software engineering menganggap bahwa source code merupakan gudang pengetahuan mengenai domain masalah yang telah dikumpulkan dan disempurnakan oleh developer melalui upaya yang cermat.

Nah, 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.

Idealnya, sistem ini juga bisa berfungsi pada platform lainnya, menggantikan sistem operasi dan tools yang biasanya harus digunakan para engineer dan developer.

Jika kamu adalah seorang perancang grafis atau web dan ingin menyimpan setiap versi dari sebuah gambar atau layout (yang tentunya kamu ingin melakukannya), sebuah Version Control System (VCS) adalah hal yang bijak untuk digunakan. VCS memperbolehkan kamu untuk mengembalikan berkas-berkas ke keadaan sebelumnya, mengembalikan seluruh proyek kembali ke keadaan sebelumnya, membandingkan perubahan-perubahan di setiap waktu, melihat siapa yang terakhir mengubah sesuatu yang mungkin menimbulkan masalah, siapa dan kapan yang mengenalkan sebuah isu dan banyak lagi. Menggunakan VCS secara umum juga berarti bahwa jika kamu melakukan kesalahan atau menghilangkan berkas, kamu dapat dengan mudah memulihkannya. Sebagai tambahan, kamu mendapatkan semua ini dengan biaya yang sangat sedikit.

Jenis Jenis Version Control System

1. Version Control System Local

Metode ini adalah yang banyak dipilih oleh orang-orang adalah dengan menyalin berkas-berkas ke direktori lain (mungkin direktori yang diberi catatan waktu, jika mereka cerdas). Pendekatan ini sangat umum karena ini sangat sederhana, namun ini juga sangat rentan terkena galat. Mudah sekali untuk lupa pada direktori mana Anda sedang berada dan menulis ke berkas yang salah atau menyalin setiap berkas yang bukan Anda maksud secara tidak sengaja.

https://git-scm.com/book/en/v2/images/local.png

2. Version Control System Centraliz (Terpusat)

Jenis version control system berikutnya adalah CVCS. Sistem satu ini 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.

https://git-scm.com/book/en/v2/images/centralized.png

Pengaturan ini menawarkan banyak keuntungan, terutama dibandingkan dengan VCS lokal. Contohnya, setiap orang tahu hingga pada tahapan apa yang orang lain sedang kerjakan di dalam proyek. Para administrator memiliki kendali yang baik mengenai siapa dapat melakukan apa; dan itu jauh lebih mudah untuk mengelola sebuah CVCS daripada menangani database lokal pada setiap klien.

Akan tetapi, pengaturan ini juga memiliki beberapa kekurangan. Yang paling jelas adalah satu titik kegagalan yang diwakili oleh server terpusat. Jika server tersebut sedang down selama satu jam, maka selama itu tidak ada orang yang dapat bekerja bersama atau menyimpan perubahan yang telah diberi versi terhadap apapun yang sedang mereka kerjakan. Jika hard disk dari database pusat menjadi corrupted, dan cadangan yang memadai belum tersimpan, Anda akan kehilangan segalanya — seluruh riwayat dari proyek kecuali setiap snapshot yang dimiliki oleh orang-orang pada mesin lokal mereka. Sistem VCS lokal menderita dari hal yang sama pula — ketika Anda memiliki semua riwayat dari proyek pada satu tempat, Anda memiliki resiko untuk kehilangan semuanya.

3. Distributed version control systems

Di sinilah Distributed Version Control System (DVCS) masuk. Pada DVCS (seperti Git, Mercurial, Bazaar atau Darcs), para klien tidak hanya melakukan check out pada snapshot terakhir dari berkas: mereka mencerminkan sepenuhnya repository tersebut. Dan juga, jika ada salah satu server yang mati, dan sistem-sistem ini bekerja bersama melalui server itu, setiap repository milik klien dapat disalin kembali ke server untuk memulihkannya. Setiap check out benar-benar cadangan penuh dari semua data.

DVCS mengandung banyak repositori. Sistem ini mendukung cara kerja di mana tiap pengguna memiliki repositori dan copy dari pekerjaan mereka sendiri.

https://git-scm.com/book/en/v2/images/distributed.png

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.

Selebihnya, banyak dari sistem ini mampu menangani beberapa remote repository yang dapat mereka kerjakan dengan baik, sehingga Anda dapat bekerja bersama dengan beberapa kelompok orang yang berbeda dengan cara yang berbeda secara bersamaan dalam proyek yang sama. Kemampuan ini memperbolehkan Anda untuk mengatur beberapa jenis alur kerja yang tidak mungkin dilakukan pada sistem terpusat, seperti model hirarkial.

Intinya, DVCS mendorong budaya tanggung jawab pada tiap perubahan yang dilakukan masing-masing engineer dan developer.

Itulah beberapa jenis Version Control yang ada. Untuk saat ini , version control system terbaik yang paling banyak digunakan pada software project adalah seperti berikut ini:

  • GIT
  • CVS
  • SVN
  • Mercurial
  • Monotone
  • Bazaar
  • TFS
  • VSTS
  • Perforce Helix Core
  • IBM Rational ClearCase

Jadi apakah VCS itu benar benar penting ?

Jadi apakah VCS itu benar-benar penting? tentu saja penting. Sebagaimana dijelaskan sebelumnya VCS sangat membantu untuk memanage versi dari aplikasi yang kita bangun, apalagi jika kita membangun aplikasi tersebut dalam bentuk tim. Ini dapat mengurangi resiko terjadinya source code yang di buat bertabrakan dengan source code anggota tim yang lain.

10118370-Muhammad Yusuf

Program Studi Teknik Informatik

Fakultas Teknik dan Ilmu Komputer

Universitas Komputer Indonesia

Referensi :

--

--

muhammad yusuf
muhammad yusuf

Written by muhammad yusuf

Mahasiswa Program Studi Teknik Informatika Universitas Komputer Indonesia

No responses yet