Subversion Dan TortoiseSVN

Preview:

DESCRIPTION

Subversion Dan TortoiseSVN

Citation preview

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 muhammad.abrari@gmail.com