an introduction to subversion (bahasa indonesia)
DESCRIPTION
Konsep penerapan revision control menggunakan Subversion dalam bahasa indonesia. Disertai contoh-contoh terapan sehingga mudah dimengerti dan difahami. Disampaikan oleh Founder Artivisi Intermedia, Endy Muhardin.TRANSCRIPT
Version ControlVersion Controldengandengan
SubversionSubversion
Endy Muhardin <Endy Muhardin <[email protected]@artivisi.com>>
http://endy.artivisi.comhttp://endy.artivisi.comlast updated : 2006-11-29last updated : 2006-11-29
MateriMateri
● Apa itu version controlApa itu version control● Apa itu SubversionApa itu Subversion● Penggunaan harianPenggunaan harian● Tag, Branch, MergeTag, Branch, Merge● Perangkat tambahanPerangkat tambahan
Version ControlVersion Control
● File ServerFile Server● Menyimpan riwayat perubahanMenyimpan riwayat perubahan● Tag: menandai momen pentingTag: menandai momen penting● Branch : bekerja paralelBranch : bekerja paralel● Merge : menggabungkan perubahanMerge : menggabungkan perubahan●
SubversionSubversion
● http://subversion.tigris.orghttp://subversion.tigris.org● Tujuan : menggantikan CVSTujuan : menggantikan CVS● Sponsor : CollabNetSponsor : CollabNet● Lisensi : Open Source & GratisLisensi : Open Source & Gratis
Tanpa Subversion [1]Tanpa Subversion [1]
Tanpa Subversion [2]Tanpa Subversion [2]
Tanpa Subversion [3]Tanpa Subversion [3]
Tanpa Subversion [4]Tanpa Subversion [4]
Dengan Subversion [1]Dengan Subversion [1]
Dengan Subversion [2]Dengan Subversion [2]
Dengan Subversion [3]Dengan Subversion [3]
Dengan Subversion [4]Dengan Subversion [4]
Membuat RepositoryMembuat Repository
●
●
●
● svnadmin create fstype fsfs foldersvnadmin create fstype fsfs folder
Protokol svnserveProtokol svnserve
●
●
●
● svnserve d r namafoldersvnserve d r namafolder
svnserve.confsvnserve.conf
● [general][general]● #anon-access = read#anon-access = read● auth-access = writeauth-access = write● password-db = passwdpassword-db = passwd● realm = Repo Sayarealm = Repo Saya
passwdpasswd
● [users][users]● endy = latihanendy = latihan● anton = belajaranton = belajar●
mkdirmkdir
svn mkdir svn://localhost/trunk svn mkdir svn://localhost/trunk
importimport
svn import . svn://localhost/trunksvn import . svn://localhost/trunk
checkoutcheckout
●
●
●
svn checkout svn://localhost/trunksvn checkout svn://localhost/trunk
statusstatus
●
●
●
svn statussvn status
commitcommit
●
●
●
svn commit m “keterangan perubahan”svn commit m “keterangan perubahan”
historyhistory
●
●
●
svn log namafilesvn log namafile
Diff / DeltaDiff / Delta
● Subversion tidak menyimpan seluruh fileSubversion tidak menyimpan seluruh file● Hanya menyimpan selisih antar revisionHanya menyimpan selisih antar revision●
svn diff r10:13 namafilesvn diff r10:13 namafile
rev 1rev 1
public class Kalkulator{public class Kalkulator{
}}
rev 2rev 2
public class Kalkulator{public class Kalkulator{
public int tambah(int x, int y){public int tambah(int x, int y){
return x + y;return x + y;
}}
}}
rev 3rev 3
public class Calculator{public class Calculator{
public int add(int x, int y){public int add(int x, int y){
return x + y;return x + y;
}}
public int substract(int x,int y){public int substract(int x,int y){
return x y;return x y;
}}
}}
Isi database SubversionIsi database Subversion
Branch & TagBranch & Tag
● Tag : menandai titik pentingTag : menandai titik penting– rilis ke QCrilis ke QC– rilis ke pelangganrilis ke pelanggan– sebelum/sesudah refactoringsebelum/sesudah refactoring– sebelum/sesudah mergesebelum/sesudah merge
● Branch : memungkinkan kerja paralelBranch : memungkinkan kerja paralel– persiapan rilis & penambahan fiturpersiapan rilis & penambahan fitur– refactoring besarrefactoring besar
Branch & Tag SubversionBranch & Tag Subversion
● Berbeda dengan branch/tag CVSBerbeda dengan branch/tag CVS● Operasi copy folder biasaOperasi copy folder biasa● Bisa commit ke tagBisa commit ke tag● Cheap copy, tidak boros spaceCheap copy, tidak boros space
tagtag
●
●
●
svn cp trunk tags/namatagsvn cp trunk tags/namatag
branchbranch
●
●
●
svn cp trunk branches/namabranchsvn cp trunk branches/namabranch
Konsep MergeKonsep Merge
● Menggabungkan perubahan di folder lainMenggabungkan perubahan di folder lain● Butuh tiga parameter:Butuh tiga parameter:
– folder asalfolder asal– titik awaltitik awal– titik akhirtitik akhir
● Dijalankan di folder tujuanDijalankan di folder tujuan
Parameter MergeParameter Merge
mergemerge
svn merge r4:8 svn://localhost/QC/01svn merge r4:8 svn://localhost/QC/01
Aplikasi ClientAplikasi Client
● Command LineCommand Line● TortoiseSVNTortoiseSVN● RapidSVNRapidSVN● IDE (Eclipse, Netbeans, IDEA)IDE (Eclipse, Netbeans, IDEA)● Cadaver (WebDAV client)Cadaver (WebDAV client)● Macromedia Dreamweaver (WebDAV)Macromedia Dreamweaver (WebDAV)● AntAnt●
Aplikasi TambahanAplikasi Tambahan● WebSVNWebSVN
– open sourceopen source– dibuat dengan PHPdibuat dengan PHP
● FisheyeFisheye– komersialkomersial– dibuat dengan Javadibuat dengan Java
● Menampilkan informasi isi repositoryMenampilkan informasi isi repository– diffdiff– blameblame–
WebSVNWebSVN
Fisheye – Front PageFisheye – Front Page
Fisheye BlameFisheye Blame
Keterbatasan SubversionKeterbatasan Subversion
● Repository terdistribusiRepository terdistribusi– repository tidak bisa direplikasirepository tidak bisa direplikasi
● Pencatatan merge otomatisPencatatan merge otomatis– svn merge r10:13 namabranchsvn merge r10:13 namabranch
● Aplikasi tambahanAplikasi tambahan– statcvsstatcvs
●
PesaingPesaing
● CVS (open source)CVS (open source)● SVK (open source)SVK (open source)● Visual Source Safe (komersial)Visual Source Safe (komersial)● Vault (komersial)Vault (komersial)● Perforce (komersial)Perforce (komersial)● BitKeeper (komersial)BitKeeper (komersial)
What's next ? What's next ?
● IntegrasiIntegrasi– AntAnt– MavenMaven
● Continuous IntegrationContinuous Integration– Cruise Control Cruise Control – LuntbuildLuntbuild– AnthillAnthill
??????
Pertanyaan dan DiskusiPertanyaan dan Diskusi
Terima KasihTerima Kasih
● [email protected]@artivisi.com
● http://endy.artivisi.comhttp://endy.artivisi.com
● Y!: endymuhardinY!: endymuhardin