Monday, 7 September 2015

What is Version Control

WHAT IS VERSION CONTROL

Dalam dunia pembangunan perisian komputer, Version Control merupakan 
sesuatu yang penting (Jika pengaturcara tu mementingkan kualiti dan 
menjaga dari aspek kelestarian perisian yang dibangunkan la..)

Apa itu Version Control??? Secara literally kita bole agak kan..
Ok, Version Control ialah satu sistem yang mengawal rekod-rekod sesuatu
file dari masa ke semasa. Version Control System lebih dikenali dengan
nama VCS. So lepas ni Brader Cipun gune VCS aje ok.. 

Terms yang penting dalam VCS ni Brader Cipun rasa tak banyak.
Gatekeeper, Repo, update, commit, checkout, push, pull.

Repo = tempat simpan kesemua file yang melibatkan progran,
Gatekeeper jaga Repo
update = download latest file dari Repo,
commit = upload file yang dah diubah suai ke Repo,
checkout = file apa yang nak dipaparkan kepada end user.
push = upload file ke Repo
pull = download file dari Repo

VCS ni ad banyak jenis ke?
  1. Local Version Control System
  2. Centralized Version Control System
  3. Distributed Version Control System
Local Version Control System
Local Version Control System
Kalu kita tengok dari diagram di atas, ini cara VCS yang paling mudah.
dan biasalah kalu paling mudah mesti ada banyak kekurangan dia kan.
Ok bagi Local VCS ni, cara praktis dia mudah saja, apa yang selalu dibuat oleh
programmer ialah, 
copy version yang sedia ada, 
buat perubahan yang perlu then upload program yang telah diubah suai tadi.
(program yang lama biar sebagai rujukan or in case yang version latest 
ni ada masalah, boleh inverse version balik) 


Centralized Version Control System
Centralized Version Control System
Sekarang kita tengok pula Centralized VCS. Seperti yang anda lihat di atas
Centralized VCS ni practice nya upgrade cket dari Local VCS tadi.
Practice nya sama, 
Programmer akan copy file yang nak diubah usai,
then siap ubah suai, akan di'commit'.
Beza nya dengan Local VCS???
Centralized VCS membenarkan programmer ambil code untuk diubah suai
tetapi apabila programmer nak commit, akan clash, clash macam mana???
Programmer A dan B update coding pada masa yang sama,
setelah diubah suai, Programmer A commit coding dahulu,
then Programmer B pula nak commit,
Programmer B akan error sebab file asal yang didownload tadi dah tak 
wujud dalam Repo sebab Programmer A dah commit file yang dia dah 
ubah suai. So Programmer B perlu update sekali lagi (tanpa perlu delete
coding yang telah dibuat), dan commit macam biasa.
Jika kedua-dua programmer ini update pada masa yang sama dan tengok 
balik file tu, coding kedua-dua programmer ni ada dalam tu...

Distributed Version Control System
Distributed Version Control System



Apa beza Version Control dengan Subversion???


Jangan keliru, Version Control ialah sistem manakala Subversion ialah
software yang digunakan dalam Version Control. Maksudnya, Subversion
ni ialah contoh-contoh software yang boleh digunakan untuk kita 
mengaplikasikan Version Control ni.

Kenapa penting sangat VCS ni Brader Cipun??
Meh sini kita story..

Programmer boleh bertukar menjadi Hulk..Seriously..sebab apa??

Bila program da siap, then upload, tiba2 sehari lepas tu, program tak jalan.
atau ada masalah. Sebelum ni run elok je..
Tengok2 coding, ada tokok tambah....
Malaun mana la yang kacau program aku ni..

Tu satu hal...
Jenis plak ramai tangan, semua nak tunjuk pandai, belum test lagi coding tu,
dengan konfidennye terus letak dalam live site. Boommm, semua berkecamuk,
pastu mula tak mengaku sape buat. Bak pepatah mat salih cakap,
'Baling batu, sembunyi tangan' haaa...

Baik.
Dalam VCS, ada satu orang yang dipanggil 'GateKeeper'.. 
haaa ni macam Cikgu disiplin la, 
masuk sekolah baju tak tuck-in, keluar..
masuk sekolah pakai selipar, keluar..
masuk sekolah seluar skinny, keluar...

Ok, tu la function 'GateKeeper'. Setiap coding baru, features, function baru 
yang diperkenalkan dalam coding tu, perlu dilepaskan ke live site
oleh 'GateKeeper'. 
'GateKeeper' bagi greenlight, baru boleh upload tu live site.
1 lagi bestnya VCS ni, die akan record siapa yang buat perubahan dalam
coding dan setiap perubahan ada direkodkan dalam log.
So kalu ada masalah, trace balik coding mana yang masalah then kita tau 
siapa yang buat then boleh refer kepada orang tu untuk betulkan.

Okeylah penat Brader Cipun membebel, pape pun macam biasa,
ruang komen kat bawah tu free untuk korang komen pape yang korang suka
okey,sekian....


No comments:

Post a Comment