IF F5124 4 ‐ Ev volusii Peraangkaat Lun nak Eksplorrasi CVSSNT ‐ To ortoiseCVS
10//9/2013
Anggyy Trisnadoli [23 3512116 6] Ardianto Wibowo [2351213 37] Reny M Medikaw wati [23 351211 19]
LANDASAN TEORI
Concurrent Versioning System (CVS) CVS (Concurrent Versioning System) adalah sebuah sistem kendali versi, atau suatu program manajemen versi yang mengatur perubahan versi file pada suatu proyek yang melibatkan banyak file dan atau banyak developer. CVS adalah nenek moyang dari revision control system, direlease pada tahun 1986. Suatu program manajemen versi memungkinkan banyak developer mengerjakan suatu proyek secara bersama dan juga memungkinkan satu developer yang mengerjakan suatu proyek untuk mengontrol versi file-file yang sedang dikembangkan. CVS biasanya digunakan sebagai salah satu bagian penting dalam pengembangan perangkat lunak dimana sistem ini berfungsi melacak dan mengkoordinasi setiap perubahan source code yang dilakukan oleh banyak developer. Karena kegunaanya, CVS saat ini sangat populer di dunia pengembangan perangkat lunak dengan metodelogi open source. CVS adalah program manajemen versi yang dirancang untuk menangani proyek dengan file teks murni seperti program, dokumentasi dalam format teks (misalnya dalam txt, html, sgml atau LaTex), bukan file atau dokumen biner seperti dokumen milik Microsoft Office Bug biasanya muncul pada saat perangkat lunak sedang dimodifikasi, dan mungkin tidak disadari keberadaan bug tersebut untuk waktu yang lama. Dengan menggunakan CVS, versi software sebelum bug terjadi dapat dilacak dan dapat dilihat perubahan apa yang dilakukan yang menyebabkan timbulnya bug. Jika ada banyak developer yang mengerjakan suatu proyek, kemungkinan terjadinya proses saling menimpa (overwrite) program akan sangat besar. CVS dapat membantu mengatasi hal ini dengan cara memisahkan/mengisolasi developer yang satu dengan yang lain. Setiap developer bekerja di direktori masing-masing kemudian CVS menggabungkan proyek saat semua developer telah menyelesaikan pekerjaannya.
Prinsip Kerja CVS CVS merupakan sistem yang berjalan secara client server, bila ingin menjalankan CVS developer harus terhubung dengan server, tetapi dapat juga berjalan standalone dengan menggunakan server localhost. Dalam CVS, file dalam suatu proyek disimpan pada tempat penyimpanan yang disebut dengan repository. Jika ingin mengakses file dalam repository, developer harus
log gin terlebih dahulu, seetelah itu m melakukan checkout yyaitu menyaalin file daari rep pository ke direktori d tem mpat bekerja. Setelah pekerjaannya sselesai makaa file-file taddi disalin kembalii ke reposito ory, disebut jjuga melakuk kan checkin atau commiit.
Gam mbar 1: Arsiitektur CVS Client-Servver
TortoiseCVS CVS bekerja b dengan commaand line innterface, inii merupakan n salah sattu kek kurangan daari CVS. Pada saat inii pengemban ngan prograam banyak menggunaka m an IDE E (integrateed developm ment environment) grafiss, maka unttuk memenu uhi kebutuhaan terssebut dicipttakanlah Toortoise CVS S salah satuu front-end client yangg dirilis oleeh General Publicc License. Tidak T seperrti kebanyak kan CVS, CVS C ini term masuk dalam m Wiindows shelll dengan menambahka m an entri ke dalam menu konteksttual dari file exp plorer, sehinngga tidak berjalan b di window laiin. TortoiseC CVS terinteegrasi dengaan meenu
window ws explorerr sehingga sangat mem mudahkan developer d
maanajemen souurce code suuatu perangkat lunak.
Gambar 22: TortoiseCV VS
d dalam prosees
EKSPLORASI CVS
1. Spesifikasi Perangkat Lunak Berikut ini adalah spesifikasi perangkat lunak CVSNT : 1. Bisa berjalan diatas Sistem Operasi windows 2. Dapat menyimpan semua versi dari tiap file yang dibuat 3. Dapat mengatur hak akses file 4. Memungkinkan akses terhadap file secara bersamaan (konkuren file) 5. Menyimpan hanya perubahan file 6. Dapat melakukan pencatatan perubahan yang ada pada file awal, sehingga disk space yang digunakan lebih sedikit 7. Dapat melakukan branching (menciptakan cabang dalam pengembangan perangkat lunak sehingga ada dua versi atau lebih yang dikembangkan dengan jalur yang berbeda, yang berasal dari perangkat lunak yang sama 8. Sangat berguna digunakan untuk proyek yang melibatkan banyak orang, terutama dalam menghindari konflik terhadap perubahan pada file yang sama.
2. Kelebihan dan Kekurangan Perangkat Lunak Berikut ini adalah kelebihan dari CVS: 1. Menu TortoisCVS terintegrasi dengan menu Windows Explorer TortoisCVS memungkinkan para developer untuk bekerja dengan file yang dikontrol oleh CVS langsung dari Windows Explorer. TortoiseCVS memenuhi dan menyediakan environment “point-end-click” dengan penggunaan dan konfigurasi yang sangat mudah, hanya dengan klik kanan semua menu dapat diakses. 2. Terdapat banyak resoure dan referensi yang membahas tentang CVS, sehingga pada tahap awal penggunaan, developer mendapat panduan dengan mudah. Resource yang ada berupa buku dan tutorial on-line. •
O'Reilly's "Open Source Development with CVS", 3rd edition, dapat diakses pada http://cvsbook.red-bean.com/ (under the GPL) Buku dapat diakses pada: http://www.oreilly.com/catalog/1932111816/
•
LinuxChix's own Jenn Vesperman wrote O'Reilly's "Essential CVS", dari http://www.oreilly.com/catalog/cvs/
SVN merupakan versioning sistem yang serupa dengan CVS berikut ini adalah perbandingan antar CVS dan SVN dilihat dari kriteria: repository format, speed, tags & branches, meta data, file types, rollback, transactions, availability, internal architecture and code. Kolom dengan background berwarna pink merupakan kekurangan dan backgroud berwarna biru merupakan kelebihan No
Compared item
CVS CVS is based on RCS files of
SVN The basis of SVN is a relational
versions control. Each file connected database (BerkleyDB) either set of to CVS is an ordinary file containing binary files (FS_FS). On one hand,
1
some additional information. It is
this settles many problems (for
quite natural that the tree of these
example, concurrent access through
files repeats the file tree in the local
the file share) and enables new
directory. Thus, with CVS you
functionalities (for example,
Repository format should not be anxious about data
transactions at operations
loss, and you can easily correct RCS performance). However, on the other files if necessary.
hand, data storage now is not transparent, or at least is not available for user interference. That is why the utilities for "curing" and "recovering" of the repository (database) are provided.
CVS works more slowly.
As a whole, due to some constructive solutions, SVN really works faster than CVS. It transmits less information through the network and
2
supports more operations for offline
Speed
mode. However, there is the reverse of the medal. Speed increasing is achieved basically at the expense of full backup of all work files on your computer.
3
To our point of view, these are
The SVN developers assert with pride
implemented properly.
that they have got rid of 3
Tags & Branches
measurements by working with tags
(!!!
and branches. In practice it means that
IMPORTANT)
they have substituted both concepts for a capability of copying file(s) or directories within the repository with
saving the history of changes. That is, both tag creation and branch creation are substituted for copying within the repository. From the SVN developers' viewpoint, this is very elegant decision, which simplifies one's life. However, we think that there is nothing to be proud of. As for branches, everything is not so bad, now branches are nothing but separate folders in the repository, which earlier have had some interconnection. As for tags, everything is much worse. Now you cannot tag a code, this function is simply missing. Certainly, to some extent this is compensated by universal numbering of files in SVN, that is, the whole repository gets the version number, but not each separate file. However, we suppose you will not deny that it is not very convenient to store a four- digit number instead of a symbolic tag. CVS allows to store of only files and SVN allows to "attach" to a file any nothing else. 4
Meta data
number of all possible named attributes. Excellent functionality, but it is not quite clear what it is necessary for.
5
File types
CVS was initially intended for text
SVN manipulates all the file types and
data storage. That is why storage of
does not require your instructions.
other files (binary, unicode) is not trivial and requires special information, as well as adjustments on either server or client sides.
6
Rollback
CVS allows to rollback any commit
SVN does not allow rollback of
in the repository, even if this may
commit. Authors suggest copy good
require some time (each file should
repository state to the end of trunk to
be processed independently)
overwrite bad commit. However bad commit itself will remain in
repository. In CVS the support of transactions by SVN does support transactions by the the principle "all or nothing" is
principle "all or nothing". Probably
completely absent. For example,
this is an advantage of the system.
when you checkin several files (transfer them to the server), it is possible that the operation will be completed only for some of these 7
Transactions
files, and will not be completed for the rest (due to conflicts, for example). As a rule, it is sufficient to correct the situation and to repeat the operation for the remaining files (not for all files). That is, the files will be checked in in two steps. No cases of the repository damage due to absence of this functionality were observed. Presently CVS is supported
8
Availability
SVN not yet so widly used, as the
everywhere where you might need it. result there are places where it support still not implemented. CVS is very old system. Initially
Subversion authors really spent some
CVS was written as bunch of scripts
time on internal SVN architecture.
around RCS executable. Later this
Still not know how good are some
packaged into single executable. But decisions they make. But one is clear, internal structure of code is poor and the code is well expandable, and Internal 9
architecture and code.
have lots of historical fixes. Till now future improvements are coming. there was several attempts to rewrite CVS from scratch, but as it is known without success. We, personally, tried to extract client code to make better integration between plug-in and CVS, but without success. Right now we not think that CVS may grows too much in its functionality.
9. Fitur-fitur dari Perangkat Lunak TortoiseCVS Berikut fitur-fitur yang terdapat pada aplikasi Tortoise CVS : a. Sandboxes (direktori Kerja)
TortoiseCVS memiliki metode kerja yang unik seperti kebanyakan VCS yang lain, developer dapat mengolah sebuah file secara konkuren. bekerja dengan cara mengambil file dari repository dan disalin kesebuah direktori kerjayang dinamakan sandboxes.
b. Check Out Modul Proyek yang dikerjakan atau dikembangkan disebut dengan modul. Saat pertama kali mengambil modul dari CVS server disebut dengan Checkout, sehingga akan secara automotais tercipta sebuah sandbox yang baru untuk mengerjakan sebuah modul. Saat checkout pada TortoiseCVS biasanya akan muncul beberapa dialog seperti : -
Protocol
-
Server
-
Port
-
Repository Directory
-
Username
-
Password
-
CVS Root
-
Module
c. Repository Repository CVS adalah sebuah tempat atau folder dimana menyimpan secara lengkap salinan versi semua file dan direktori yang ada dalam version control. Repository pada TortoiseCVS dapat diakses dengan alamat yang sesuai pada server lokasi repository. d. Window Explorer dan TortoiseCVS Saat checkout modul, eksplorasi TortoiseCVS bekerja dengan windows. Terlihat bahwa file akan muncul pada windows explorer dengan ikon yang berbeda. e. Update Sandbox Sandbox yang kita miliki dapat di-update jika ingin bekerja sama dengan user lain. Istilah updating juga dikatakan saat proses perubahan dari server ke direktori kerja. f. Commit Repository
Commit berarti membuat modifikasi pada local direktori ke repository. Sehingga module pada repository akan ikut berubah sesuai dengan perubahan versi yang dilakukan pada sandbox. Sebelum melakukan commit, pastikan sudah tidak ada conflict pada user lainnya.
g. Watch, Edit dan Unedit Fitur ini dibuat agar repository tetap terjaga dengan beberapa semantic keamanan yang dilakukan pada TortoiseCVS, sehingga tidak semua user dapat melakukan pengolahan terhadap semua modul yang ada direpository. h. Tagging dan Labelling Dalam pengembangan sebuah proyek, pemberian label sangat diperlukan. Karena dengan labeling kita dapat melihat dengan jelas version-version yang telah dikerjakan oleh user. Sedangkan Tagging dapat digunakan untuk modul agar dapat diberi tanda sehingga mudah dalam pengolahan atau rekonstruksi di waktu kedepan.. i. Branching dan Merging Fitur ini biasanya selalu dimiliki oleh seluruh CVS, yang berfungsi untuk melakukan percabangan yang berguna untuk mengontrol perubahan selama proses lifecycle dari suatu proyek.. j. Binary dan Unicode Pembacaan file akan dilakukan secara otomatis oleh TortoiseCVS, karena saat pertama berjalan, ekstensi file akan dilihat terlebih dahulu lau akan dilanjutkan dengan memilah file tersebut apakah binary atau Unicode. k. File Revision History Metode yang disediakn oleh TortoiseCVS ada 2, yaitu dengan cara me-review dengan history file dan melihat Revision Graph nya.
BEKERJA DENGAN CVS
A. Persiapan server Langkah pertama yang dipersiapkan adalah intallasi dan konfigurasi server CVS. Pada eksplorasi ini, lokasi server berada 1 mesin dengan aplikasi client (localhost). Berikut ini merupakan langkah-langkah yang dilakukan untuk installasi server :
1. Download server CVS Server untuk CVS yang akan dipergunakan adalah CVSNT. CVSNT dapat di download pda alamat berikut :
http://www.idevelopment.info/data/Programming/change_management/cvsnt/PROGRA MMING_Installing_CVSNT.shtml
2. Install server CVS Lakukan installasi server CVSNT
3. Setting repository CVS Setelah proses installasi selesai, selanjutnya adalah setting lokasi repository yang akan digunakan untuk menyimpan secara lengkap salinan file-file pekerjaan dari berbagai direktori yang berada di area CVS. Untuk melakukan setting repository dapat dilakukan dengan membuka command promt (CMD) windows dan ketikkan perintah berikut :
cvs -d "lokasi_repository" init
Asumsi dari repositori pada eksplorasi ini adalah di “F:\cvs_repo”.
B. Persiapan Client Saat ini, terdapat banyak aplikasi client untuk CVS. Pada eksplorasi kali ini, aplikasi client yang digunakan adalah TortoiseCVS. Langkah-langkah untuk mempersiapkan TortoiseCVS adalah sebagai berikut : 1. Download aplikasi TortoiseCVS TortoiseCVS dapat di download pada link berikut : http://tortoisecvs.sf.net/
2. Install TortoiseCVS
3. Cek apakah installasi berhasil Untuk melakukan crosschek, lakukan klik kanan pada salah satu folder di windows explorer. Apabila installasi berhasil, maka akan tampak tambahan menu sebagai berikut :
C. Bekerja dengan TortoiseCVS Sekarang tiba saatnya untuk bekerja dengan CVSNT menggunakan aplikasi client TortoiseCVS. Adapaun langkah yang dilakukan adalah sebagai berikut :
1. Membuat module baru Module di dalam CVS dapat diibaratkan project pada beberapa software yang lain. Module ini nantinya akan menghubungkan file-file yang berada di folder/direktori dengan folder repository. Untuk membuat module baru, lakukan dengan memilih folder untuk modulnya, lalu Klik Kanan – CVS – Make New Module.
Pada
eksplorasi
ini,
diasumsikan
folder
yang
akan
dijadikan
module
adalah
“F:\tugasCVS\modulCVS”. Selanjutnya, atur agar koneksi yang digunakan sesuai dengan lokasi repository. Pada bagian protocol dapat dipilih, apakah repository berada di sebuah server jaringan atau bahkan berada pada local server. Pada eksplorasi ini, akan dilakukan setting seperti gambar berikut :
Lokasi Repository
Lokasi Server
Nama Module
Tekan tombol OK, akan muncul jendela informasi bahwa proses pembuatan module sudah berhasil.
Hasilnya, folder “modulCVS” akan terdapat tanda seperti gambar dibawah. Untuk selanjutnya, modulCVS inilah yang disebut dengan sandbox :
Hal ini menyatakan bahwa folder “modulCVS” sudah berada di bawah manajemen CVS. Dalam lingkungan multiuser, area modul “modulCVS” inilah yang akan menjadi area kerja yang terhubung dengan repositori dan module milik user lain. Setiap aktifitas yang dilakukan oleh user lain dapat terlihat perubahannya melalui modul ini. Catatan : Bentuk status icon folder / file pada module Tortoise ditunjukkan pada gambar berikut :
2. Menambah File Baru (CVS Add) Langkah selanjtnya adalah menambahkan file baru kedalam module. File ini nantinya akan diakses dan dimodifikasi oleh user yang lain melalui module yang dimiliki user-user tersebut. Untuk menambahkan file baru, awali dengan menambahkan file melalui windows explorer di dalam module tersebut. Pada eksplorasi kali ini, digunakan sebuah file .txt seperti gambar berikut :
Sampai tahap ini, file “file_CSV.txt” ini belum bisa dibaca oleh user lain. Agar file ini available terhadap user lain, maka harus di add-kan ke dalam module yang dapat diartikan didaftarkan ke repository. Hal ini ditunjukkan pada gambar berikut :
Hasilnya, akan terjadi penambahan tanda seperti pada gambar berikut :
Pada langkah ini, posisi file_CVS masih berada di local sandbox / module kita (belum dikirim ke repository), sehingga belum bisa dibaca oleh user lain.
3. Crosscheck terhadap kemungkinan perbedaan data antar user & Repository (CVS Diff) Sebelum dikirim ke repository, ada baiknya dilakukan pengecekan terlebih dahulu apakah isi di dalam file yang kita modifikasi terjadi perbedaan dengan isi file yang sama di dalam repository ataupun di sandbox user lain. Untuk file pertama yang akan kita simpan ke repository, hal ini tidak berlaku. Akan tetapi untuk file yang sifatnya modifikasi dari repository, hal ini menjadi sangat penting. Untuk melakukan crosscheck, pilih pilihan “CVS Diff”.
4. Menyimpan file ke dalam repository (CVS Commit) Selanjutnya, agar bisa diakses oleh user lain, maka file yang dibuat dikirim kedalam repository. Untuk mengirim file kedalam repository, lakukan perintah commit. Dalam lingkungan multiuser,
Commit dapat dilakukan oleh antar user dengan cara melakukan percabangan sehingga jika terjadi kesalahan pada repository di waktu kedepan, maka akan ada history yang dapat menjadi recovery.
Hasilnya, terjadi perubahan tanda icon pada file “file_CSV”.
Pada kondisi ini, file CVS sudah bisa dimodifikasi oleh user lain karena sudah terdaftar di repository. 5. Mengambil file dari repository (CVS check out) Apabila kita tidak mulai membuat file dari awal, maka kita dapat mengambil file dari repository untuk dimasukkan ke dalam sandbox. Proses checkout dapat dilakukan berada.
6. Mengembangkan alur yang berbeda (Branching & Merging) Salah satu fitur utama dalam sebuah sistem version kontrol adalah adanya kemampuan untuk mengisolasi perubahan kedalam bagian terpisah pada proses pengembangan, dimana hal ini dinamakan Branch. Branch berguna untuk mengontrol perubahan dalam proses pengembangan. Sebagai contoh, kita sudah merilis sebuah software dengan versi 1.0. Kemudian, kita menambah beberapa fitur tambahan untuk dipersiapkan kedalam versi 2.0. Dalam jeda antara versi pertama dan pengembangan versi kedua, dapat diciptakan beberapa kemungkinan dan akan sangat mungkin terjadinya bug. Untuk itu branch dapat dipergunakan dengan tanpa mengganggu versi yang pertama.
HUBUNGAN DENGAN EVOLUSI PERANGKAT LUNAK & CONFIGURATION MANAGEMENT
Perubahan merupakan kenyataan hidup bagi sebuah sistem perangkat lunak besar, beberapa penyebab terjadinya perubahan adalah adanya perubahan pada kebutuhan dan persyaratan organisasi, ditemukan error, ada penambahan alat/komputer baru pada sistem, dll. Perubahan ini penting segera dilaksanakan mengingat software merupakan aset yang penting bagi perusahaan. Pada perusahaan besar, mayoritas bugdet lebih di khususkan untuk merubah dan mengembangkan software yang sudah ada dari pada untuk membangun software baru. Oleh karena itu perubahan dan evolusi software wajib dilakukan. Configuration Management (CM) memiliki tugas yang sangat penting pada evolusi perangkat lunak, yaitu mengelola policy, proses dan tools yang digunakan untuk perubahan software. Salah satu tugasnya adalah melakukan managemen versi dan rilis. CM sangat dibutuhkan karena sangatlah gampang untuk kehilangan kendali tentang apa yang sudah diubah. Untuk itu perlu CASE Tool seperti CVS yang sudah dibahas diatas.