Selama perkembangannya terdapat 3 jenis VCS:
- Local Version Control System
- Centralized Version Control System
- Distributed Version Control System
Local Version Control System
Sebagian besar orang melakukan pengontrolan versi dengan cara menduplikasi file-file ke direktori yang lain mungkin dengan memberikan penanggalan. Cara seperti ini sangat umum karena sangat sederhana, namun cenderung rawan kesalahan. Bisa jadi Anda lupa letak direktori Anda atau terjadi kesalahan penulisan file atau menyalin file yang salah.
Untuk mengatasi permasalahan ini, para programmer mengembangkan VCS lokal yang memiliki basis data sederhana untuk menyimpan semua perubahan pada file yang terhubung dengan VCS. Salah satunya adalah RCS. RCS bekerja dengan cara menyimpan kumpulan patch dari satu perubahan ke perubahan lainnya dalam format khusus pada drive. Patch ini yang kemudian dapat digunkan untuk mengembalikan keadaan suatu file pada keadaan sebelumnya.
Centralized Version Control System
Permasalahan yang terjadi ketika menggunakan Local VCS adalah dukungannya terhadap kolaborasi. Maksudnya adalah ketika suatu file atau project ingin digunakan oleh lebih dari satu orang. Maka dari itu dibangunlah Centralized Version Control Systems (CVCSs). Sistem ini diantaranya CVS, Subversion dan Perforce yang memiliki sebuah server untuk menyimpan setiap versi file dan dapat terdiri dari beberapa user yang nantinya dapat menyalin (checkout) file dari server pusat.
Sistem ini memiliki beberapa kelebihan, terutama jika dibandingkan dengan Local VCS. Misalnya, setiap orang pada tingkat tertentu dapat mengetahui apa yang orang lain lakukan pada file atau proyek. Administrator memiliki kendali yang tinggi atas siapa dan apa yang dapat dilakukan oleh user/klien. Sehingga ini menjadi lebih mudah dibandingkan menangani database lokal pada setiap user/klien.
Meski demikian, sistem dengan tatanan seperi ini memiliki kelemahan serius. Kelemahan nyata yang direpresentasikan oleh sistem dengan server terpusat. Jika server mati untuk beberapa jam, maka tidak ada seorangpun yang bisa berkolaborasi atau menyimpan perubahan terhadap apa yang mereka relah kerjakan. Jika hardisk yang menyimpan basis data mengalami kerusakan, dan salinan yang benar/fix belum tersimpan, Anda akan kehilangan setiap perubahan dari proyek kecuali snapshot-snapshot yang dimiliki oleh setiap user/klien pada komputernya masing-masing. Lokal VCS juga mengalami nasib yang sama jika Anda menyimpan seluruh histori perubahan proyek pada satu tempat, Anda mempunyai resiko kehilangan semuanya.
Distributed Version Control System
Inilah saatnya bagi Distributed Version Control System untuk mengambil bagian. Dalam sebuah DVCS (seperti Git, Mercurial, Bazaar atau Darcs), klien tidak hanya melakukan checkout untuk snapshot terakhir setiap file, namun mereka memiliki salinan penuh dari repositori tersebut. Jadi jika server mati, dan sistem berkolaborasi melalui server tersebut, maka klien manapun dapat mengirimkan salinan repositori tersebut kembali ke server. Setiap checkout/commit pada DVCS merupakan sebuah backup dari keseluruhan data.
Lebih jauh lagi, kebanyakan sistem seperti ini mampu menangani sejumlah remote repository dengan baik, jadi Anda dapat melakukan kolaborasi dengan berbagai kelompok kolaborator dalam berbagai cara secara bersama-sama pada suatu proyek. Hal ini memungkinkan Anda untuk menyusun beberapa jenis alur kerja yang tidak mungkin dilakukan pada CVCSs.
Sumber : Dokumentasi Git
Tidak ada komentar:
Posting Komentar