Subversion Dan TortoiseSVN
-
Upload
muhammad-iqbal -
Category
Documents
-
view
35 -
download
2
description
Transcript of Subversion Dan TortoiseSVN
Version Control dengan
Subversion (SVN)
Praktikum RPL 8
Departemen Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor
Version Control
• Version control adalah manajemen dari
sejumlah versi (revisi) dari dokumen
terkait proyek, source code, dll.
• Nama lain dari version control
• Revision control
• Source control
• Source code management
Sistem Version Control
• Sistem version control penting untuk proyek pengembangan
perangkat lunak
• Menyediakan repository
untuk dokumen-dokumen
• Memfasilitasi kolaborasi dalam tim
• Menyediakan riwayat revisi
Sistem Version Control
• Banyak sistem version control yang tersedia
• Berbayar ($100-$4000+ per user):
• IBM Rational ClearCase
• Microsoft Visual SourceSafe
• Microsoft Team Foundation Server
• Open-source – free:
• CVS
• Git
• Mercurial
• Subversion (SVN)
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
Arsitektur Sistem Version Control
• Repository terpusat
untuk banyak client
(developer)
• Setiap developer
memiliki local repository
atau local workng copy
masing-masing
• Semuanya disatukan oleh
server version control
(http://www.zefhemel.com/archives/2005/03/24/isdw-day-4-file-exchange)
Subversion
• Dikembangkan pada 2000 dan 2001 (oleh CollabNet, sekarang
Apache) untuk menggantikan CVS
• Free
• Open-source
• Bekerja melalui jaringan
• Bisa digunakan untuk segala jenis file (namun lebih ditujukan untuk
source code program)
• Memerlukan administrasi untuk servernya
Penyimpanan Repository
• Subversion menyimpan repository secara terpusat
• Penyimpanan repository bertindak seperti fileserver
• Client melakukan koneksi, mendownload
atau mengupload file
• Koneksi dapat diamankan dengan password
• Client bisa juga melihat log
perubahan dalam repository
• Seluruh perubahan tercatat:
tanggal, waktu, user yang mengubah
Server Subversion Ilkom
• http://apps.cs.ipb.ac.id/svnweb
• Bisa diakses dari luar IPB
Mengapa harus menggunakan
version control?
Quote:
“Jumlah maksimal programmer
yang dapat bekerja sama tanpa
menggunakan version control
adalah satu orang.”
Teamwork
• Bagaimana sejumlah programmer bisa bekerjasama dalam satu
tim?
• Programmer A membuat sejumlah kode. Programmer B juga
membuat sejumlah kode. Keduanya mengerjakan program yang
sama.
• Bagaimana menggabungkannya?
• Kode siapa yang paling baru?
• Kode mana saja yang sudah diubah?
• Bagaimana kalau setelah digabungkan justru terjadi error?
Permasalahan Sharing File
• Saling menimpa perubahan
Solusi dari Subversion
• Menggunakan sistem copy-modify-merge
• Subversion akan mencoba menggabungkan keduanya
Bisa muncul
conflict
Mengatasi (Resolve) Conflict
• Bagaimana mengatasi conflict?
• Conflict tidak muncul bila perubahan
terjadi di bagian file yang berlainan
(misal Harry mengubah baris 1-10 dan
Sally mengubah baris 40-70)
• Conflict muncul bila perubahan
overlap (misal Harry mengubah baris
1-15 dan Sally mengubah baris 5-10)
• Subversion memberikan kedua
perubahan kepada Harry (A’ dan A’’)
dan Harry harus memutuskan bagaimana
menggabungkannya
Ilustrasi Resolve Conflict
• Panel kiri kode milik Sally, panel kanan kode milik Harry.
• Harry akan menggabungkannya pada panel di bawahnya.
Menggunakan Subversion
• Sebenarnya, client Subversion adalah aplikasi command-line
• Linux / Mac:
• Windows:
• Beberapa client dengan GUI telah dibuat:
• TortoiseSVN
• VisualSVN
• XCode (Mac OS X)
$ svn checkout http://server ...
C:\> svn checkout http://server ...
TortoiseSVN
• TortoiseSVN
• Open-source (free)
• Terintegrasi dengan
Windows Explorer
• Dapat digunakan dengan
IDE apapun
• Catatan:
• TortoiseSVN hanya alat untuk upload atau download dari
dan ke repository
• Sementara untuk mengetik kode program, silakan gunakan IDE
yang biasa Anda gunakan
http://tortoisesvn.net/
TortoiseSVN
• Dari Windows Explorer, gunakan TortoiseSVN dengan klik kanan
pada folder atau file
• Klik kanan pada folder
atau file
• Akan muncul menu yang
merupakan fungsi dari
TortoiseSVN
TortoiseSVN: Checkout
• Langkah pertama untuk memulai penggunaan Subversion
• Untuk membuat “local repository” yang nantinya disinkronisasi
dengan server
• Hanya perlu dilakukan satu kali pada satu komputer
(waktu pertama kali)
TortoiseSVN: Checkout
• Mendownload file-file yang ada di repository
• Tentukan URL dari repository (nanti diberikan oleh admin)
• Tentukan folder di komputer
untuk tempat menaruh file
hasil checkout
• Folder ini bebas, dan tidak
harus sama untuk setiap
programmer yang checkout
• Opsional: tentukan akan
checkout revisi berapa
(defaultnya HEAD atau
revisi terbaru)
TortoiseSVN: Melihat Status File
• Icon pada file atau folder menunjukkan status file
TortoiseSVN: Melihat Status File
Icon Status Keterangan
Normal File telah di-upload kembali ke server, atau telah
di-checkout, atau telah di-resolve bila ada conflict
Modified File telah diubah di local repository dan belum
di-upload (commit) kembali ke server
Non-versioned File ada dalam folder local repository, namun
belum ada dalam kendali Subversion (belum
ditambahkan / di-add)
Added File baru ditambahkan ke dalam local repository
(telah di-add)
Conflict File mengalami conflict dan belum di-resolve
Mengupload Perubahan: Commit
• Setelah suatu file diubah, ditambahkan, atau dihapus, lakukan
commit untuk mengupload perubahan ke server
• SVN mencatat setiap
perubahan dan
memberikan suatu
revision number
atau nomor revisi (dimulai dari 0)
• Setiap commit akan menambah
nomor revisi
• Commit dapat dilakukan per file
atau langsung satu folder
• SVN secara otomatis mengetahui file mana saja
yang berubah dan harus di-commit
Review Perubahan: Diff
• Melihat diff atau perubahan per baris dari file yang akan di-commit
Melakukan Commit
• Berikan komentar mengenai
commit yang akan dilakukan
pada bagian revision log
• Di bawahnya ada daftar file
yang akan dikirim
• Setiap perubahan akan dicatat
dan ada riwayatnya
Setelah Commit
• Nomor revisi akan ditambahkan, dan nomor terbaru ditampilkan
Sinkronisasi dengan Server: Update
• Bila kita telah melakukan commit, rekan-rekan kita satu tim tidak
langsung menerima pembaruan dari server
• Mereka harus melakukan update di local repository masing-
masing
• Update berguna untuk memastikan bahwa local repository kita
adalah revisi / perubahan yang terbaru (dari server)
• Bisa timbul
conflict di
proses ini
Ilustrasi
• John update
• John melakukan perubahan
• John commit
• Sue update
• Sue melakukan perubahan
• Sue commit
Hasil: file perubahan dari keduanya
Membatalkan Perubahan: Revert
• Bila kita telah mengubah suatu file, dan ternyata perubahan itu
justru membuat program error, kita dapat mengembalikan
perubahan tersebut ke titik update terakhir
• Semacam “undo save” atau revert
• Bisa dilakukan asalkan perubahan
belum di-commit
Tambahan
• Saran-saran:
• Jangan menyimpan file biner (misal EXE hasil compile) karena
memakan tempat yang banyak di server
• Lakukan commit secara bijak
• Jangan terlalu jarang sehingga developer lain tidak menerima perubahan
yang kita lakukan atau menerima “sekali banyak”
• Jangan terlalu sering sehingga terlalu banyak revisi
Selanjutnya
• Buka tutorial praktikum
yang disediakan.
Terima Kasih
Slide diadaptasi dari David Goldschmidt, Ph.D, The College of Saint Rose
Muhammad Abrar Istiadi [email protected]