Contoh Penggunaan Subversion

Sebelum memulai bekerja dengan subversion, ada beberapa konsep yang harus dipahami mengenai version control. Diantaranya adalah versioning model dan mekanisme delta. Aplikasi version control yang berbeda dapat mengimplementasikan konsep ini secara berbeda pula.

# Permasalahan file sharingMisalnya ada dua programmer Endy dan Anton, sedang bekerja di sebuah file yang sama. Mari kita lihat apa yang terjadi bila kita tidak menggunakan version control, tetapi mengandalkan mekanisme file sharing. Mekanisme file sharing ini menyimpan file dalam sebuah repository yang terletak di sebuah komputer yang salah satu foldernya dishare, atau di FTP server, atau yang paling primitif, source code diletakkan di dalam USB Flashdisk.

Ketika akan mulai bekerja, Endy dan Anton akan mengambil file yang sama dari dalam repository. Setelah itu Endy dan Anton mulai bekerja di folder lokal masing-masing.

img1 img2

Kebetulan Endy selesai lebih dulu. Kemudian dia segera menyimpan perubahan di repository. Tidak lama kemudian Anton selesai bekerja dan mengirimkan perubahan yang sudah dilakukanya ke dalam repository.

img3 img4

Tanpa adanya aplikasi Version Control yang baik, perubahan yang dibuat oleh Anton akan menimpa perubahan yang telah disimpan Endy sebelumnya. Bayangkan jika jumlah programmer tak hanya dua, melainkan puluhan atau bahkan ratusan orang. Maka akan terjadi kekacauan. Permasalahan File sharing ini dapat diselesaikan dengan dua pendekatan yaitu model Lock-Edit-Unlock, dan model Checkout-Edit-Merge.

# Model lock-edit-unlockModel lock-edit-unlock adalah model yang dipilih oleh Microsoft untuk mengembangkan version controlnya yaitu Visual Source Save. Dengan skenario yang sama, kita akan melihat bagaimana model ini mengatasi masalah file sharing.

Endy lebih dahulu terkoneksi ke internet dan ingin bekerja di suatu file. Dia langsung saja mengambil file tersebut dari repository. Secara otomatis Visual Source Safe akan mengunci file yang sedang dipakai oleh Endy.

Tidak lama kemudian Anton konek ke internet, dan ingin bekerja dengan file yang sama. Dia berusaha untuk mengambil file tersebut dari repository. Tentu saja, usaha Anton mengambil file tersebut dari repository gagal karena Endy memegang lock terhadap itu.

Setelah Endy selesai bekerja dengan file tersebut dia akan menyimpan perubahan yang telah dibuatnya ke dalam repository. Proses ini secara otomatis akan melepaskan lock sehingga semua orang kembali bisa bekerja dengan file ini.

Anton mencoba lagi untuk mengambil file tadi dari repository, kali ini usahanya berhasil karena Endy sudah melepaskan locknya.

Ini memang kelemahan dari model lock-edit-unlock. Dengan model ini proses management kode sumber menjadi kaku dan tidak scalable. Model ini sulit mengakomodasikan jumlah programmer yang banyak dan mereka saling bekerja di bagian yang sama. Semakin banyak orang yang bekerja dalam satu tim, mekanisme lock-unlock akan sering terjadi.

# Model checkout-edit-mergeModel inilah yang digunakan oleh Subversion, model ini tidak menyaratkan adanya siklus lock-unlock (walaupun metode lock-unlock juga bisa dilaksanakan oleh Subversion), sehingga kasus rebutan file tidak lagi terjadi. Subversion dapat mengakomodasi tim dengan jumlah programmer sangat besar tanpa harus saling menunggu penggunaan resource.

img5 img6

Mari sekali lagi kita saksikan aksi Endy dan Anton dalam bekerja mengedit file yang sama. Kali ini tidak akan jadi masalah siapa yang akan melakukan proses checkout terlebih dahulu, karena tidak ada lagi mekanisme locking.

Endy selesai lebih dahulu bekerja dengan file tersebut dan segera melakukan commit untuk menyimpan perubahan file ke repository.

img7 img8

Tak lama kemudian Anton juga selesai dengan pekerjaanya dan akan berusaha untuk melakukan commit ke repository. Namun commit yang dilakukan Anton akan mengalami error “Out-of-date”. Error ini disebabkan nilai version repository lebih besar dari nilai version folder lokal Anton.

Untuk mengatasi hal ini Anton harus melakukan Update terhadap folder lokalnya agar nilai version folder lokal sama dengan nilai version repository. Langkah ini juga akan memasukkan perubahan yang dilakukan oleh Endy dalam file tersebut.

Setelah Anton melakukan update, dan mengatasi konflik yang (mungkin) terjadi, Anton dapat melakukan commit dengan aman.

About Brillyan
just an ordinary boy

2 Responses to Contoh Penggunaan Subversion

  1. Dita Putri says:

    makasih om..
    jadi kebuka lagi memori waktu belajar di moklet🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: