Perkenalan Version Control System

download Perkenalan Version Control System

of 24

Transcript of Perkenalan Version Control System

  • 7/26/2019 Perkenalan Version Control System

    1/24

    1

    SATUAN BAHASAN I :

    Perkenalan Version Control Systemdan Subversion

    A.

    Gambaran Singkat Mengenai Materi Kuliah

    Materi kuliah ini membahas tentang pengertian dan manfaat dariversion control system, serta elemen-elemennya. Kemudian akan dibahas jugamengenai apa itu Subversion.

    B.

    Paduan Mempelajari Materi

    Baca materi mengenai dengan cermat materi pada satuan bahasan

    ini, karena pada satuan bahasan inilah anda akan mendapatkan konsepdasar dari version control systemdan Subversion. Kerjakan latihan yang adauntuk mempertajam pemahaman anda mengenai materi pada satuanbahasan ini.

    C.Tujuan Pembelajaran

    Setelah mempelajari satuan bahasan ini diharapkan mahasiswamemahami konsep dasar dari version control systemdan Subversion.

    1.1.

    Tinjauan Umum Version Control

    Version control systematau juga dikenal dengan revision control systemadalah sebuah sistem yang mencatat dan melacak setiap perubahan(revisi) yang terjadi pada sebuah file. Sistem ini akan memonitor danmencatat perubahan yang terjadi terhadap file termasuk siapa yangmelakukan perubahan, kapan perubahan terjadi, mengapa dilakukanperubahan dsb.

    Kenapa dibutuhkan version control system? Version control sistemadalahhal yang sangat penting dalam pengembangan perangkat lunak, khususnyayang sifatnya kolaboratif dan terdistribusi. Kebanyakan pengembanganperangkat lunak dewasa ini melibatkan lebih dari satu orang saja, danumumnya dilakukan secara tim. Tim ini bekerja secara paralel mengolahsekumpulan file (baik itu source code atau dokumentasi), yang sama danbiasanya dalam waktu yang lama. Karena masing-masing anggota timmengerjakan file-file yang sama, maka ada beberapa hal yang harusdiperhatikan, antara lain:

    1.

    Dibutuhkan pelacakan terhadap siapa yang melakukan perubahan,agar setiap perubahan bisa dibertanggungjawabkan.

  • 7/26/2019 Perkenalan Version Control System

    2/24

    2

    2.

    Perubahan-perubahan yang terjadi terhadap file harus dicatatsehingga kita bisa mengembalikan fileke kondisi sebelum diubahjika terjadi kesalahan.

    3.

    Dan yang tidak kalah pentingnya adalah bagaimanamenggabungkan perubahan-perubahan yang dilakukan anggotatim agar bisa dikolaborasikan dan tidak tumpang tindih.

    Disinilah fungsi dari version control system. Dengan menggunakanversion control system, ketiga hal diatas dapat dipenuhi. Version control systemdirancang untuk mencatat dan melacak setiap perubahan terhadap fileserta menyimpan sejarah (history) dari stiap perubahan (revisi)filetersebut.Setiap perubahan akan disimpan dalam bentuk versi, sehinggamemungkinkan kita melakukan rollback (pengembalian) ke versi tertentudari sebuahfileseandainya terjadi kesalahan terhadapfiletersebut. Versioncontrol system juga menyediakan fasilitas merge untuk mengkolaborasikanperubahan-perubahan yang dilakukan anggota tim.

    Manusia sebagai mahluk sosial dituntuk agar dapat bekerjasamadan saling tolong menolong, sebagai mana firman Allah swt. dalam QS.

    Al-Hujurat : 13 sebagai berikut :

    Terjemahnya :

    Hai manusia, sesungguhnya Kami menciptakan kamu dari seorang laki-laki danseorang perempuan dan menjadikan kamu berbangsa - bangsa dan bersuku-suku

    supaya kamu saling kenal-mengenal. Sesungguhnya orang yang paling mulia diantarakamu disisi Allah ialah orang yang paling taqwa diantara kamu. Sesungguhnya

    Allah Maha Mengetahui lagi Maha Mengenal.

    Allah swt. memberitahukan, bahwa Dia yang menciptakan BaniAdam dari asal yang satu dan jenis yang satu. Mereka semua darilaki-laki dan perempuan dan jika ditelusuri, maka ujungnya kembalikepada Adam dan Hawa. Allah swt. menyebarkan dari keduanya laki-laki

    dan perempuan yang banyak dan memisahkan mereka serta menjadikanmereka berbangsa-bangsa dan bersuku-suku agar mereka saling kenal-mengenal sehingga mereka bisa saling tolong-menolong, bantu-membantu dan saling mewarisi serta memenuhi hak kerabat.

  • 7/26/2019 Perkenalan Version Control System

    3/24

    3

    Meskipun demikian, orang yang paling mulia di antara mereka adalahorang yang paling takwa, yakni mereka yang paling banyak ketaatannyakepada Allah dan meninggalkan maksiat, bukan yang paling banyakkerabat dan kaumnya dan bukan yang paling mulia nasabnya.

    Salah satu tujuan dibuatnya version control adalah agar parapengembang perangkat lunak dapat saling bekerjasama dan tolong-menolong dalam menyelsaikan pekerjaannya masing-masing dengan lebihbaik.

    1.2.

    Manfaat Version Control

    Untuk lebih memahami manfaat dari version control system, berikut iniadalah jabaran dari manfaat-manfaat tersebut.

    1.

    Integritas DataVersion control system akan menjaga integritas data. Denganmenyimpan riwayat (history) dari setiap revisi file, kita tidak perlukhawatir jika file tersebut di sunting atau di hapus. Kita dapatmengembalikan file tersebut ke versi tertentu jika memangdibutuhkan. Version control juga membuat data menjadi terpusat,sehingga mudah di backup. Setiap perubahan yang dilakukananggota tim akan disimpan di sebuah tempat yang disebutrepositorypada versioncontrolsystem. Melakukan backupcukup dengan

    mem-backup repository, tidak perlu dilakukan backup di setiapkomputer anggota tim pengembang.

    2.

    ProduktifitasVersion control system akan sangat membantu tim pengembangdalam mengitegrasikan pekerjaan mereka sehingga meningkatkanproduktifitas kerja. Semakin besar dan kompleks sebuahperangkat lunak dan semakin besar jumlah anggota timpengembangnya, maka akan dibutuhkan usaha yang sangat besar

    pula untuk mengintegrasikan pekerjaan dari anggota tim. Denganmenggunakan versioncontrolsystem, anggota tim pengembang dapatmengetes hasil kerja mereka terhadap hasil kerja terbaru rekanmereka, kemudian mengidentifikasi dan memperbaiki konflikyang terjadi, sebelum konflik tersebut mejadi semakin besar dansusah diselesaikan. Anggota tim juga bebas bereksperimenterhadap file-file dengan mudah, tanpa khawatir mengenaikesalahan yang mungkin terjadi, karena file-file tersebut dapat dirollbackke versi sebelumnya.

    Tidak jarang dalam sebuah proses pengembangan yang dilakukansecara tim, beberapa anggota tim mengerjakan pekerjaan yangtumpang tindih karena mereka mengerjakan pekerjaan masing-masing di tempat yang terpisah dan sulit untuk mengamati

  • 7/26/2019 Perkenalan Version Control System

    4/24

    4

    pekerjaan anggota tim yang lain. Dengan version control system,anggota tim pengembang juga dengan mudah melihat pekerjaanyang dilakukan oleh rekan setimnya, hal ini dapat menghindarkananggota tim mengerjakan pekerjaan yang tumpang tindih.

    3.

    AkuntabilitasDalam setiap proses pengembangan perangkat lunak, adalah halyang sangat penting untuk mengetahui siapa yang berkontribusiuntuk setiap kode program yang terdapat dalam perangkat lunaktersebut dan kapan kode program itu dibuat atau dimodifikasi.Hal ini penting karena dua alasan yaitu :

    a.

    Kita dapat mengetahui siapa yang harus bertanggungjawab jika terdapat sebuah kesalahan terjadi pada kodeprogram.

    b.

    Terdapat beberapa kasus dimana dalam sebuah perangkatlunak terdapat beberapa kode atau pustaka yangdigunakan secara tidak sah. Misalnya menggunakan kodeatau pustaka yang closed source atau proprietary tanpa izinpemiliknya. Karena version control system mencatat semuaperubahan kode dan pembuat kode tersebut, makadengan mudah kita dapat mengetahui siapa yangbertanggung jawab terhadap setiap kode.

    4.

    Pencabangan (branching)Seiring berlansungnya proses pengembangan, maka secaraalamiah pencabangan proyek akan terjadi. Cabang adalah dariproyek yang dikembangkan secara terpisah dari jalur utamanyayang bisanya disebut batang (trunk). Pencabangan ini terjadikarena masing-masing anggota tim akan mengolah file atau kodeprogramnya nya masing-masing dan terpisah dari anggota timyang lain. Cabang-cabang yang muncul dalam proyek harusdikendalikan agar tidak terlalu melebar dan terlalu jauh dari batang

    utama proyek. Version control system dilengkapi fitur untukmelakukan pencabangan dan juga memiliki fitur untuk melakukanpenggabungan (merge) cabang-cabang yang ada dalam proyekkedalam batang utamanya. Dengan adanya fitur ini pencabanganakan lebih mudah dikendalikan dan batang utama tidak terganggupengembangannya.

    5.

    LoggingVersion control system juga menyediakan fitur longging yang baik,

    karena version control system dapat dikonfigurasi untukmengharusakan setiap anggota tim pengembang untukmendeskripsikan perubahan yang dilakukannya terhadap file ataukode program yang diolahnya. Hal ini sangat berguna untuk

  • 7/26/2019 Perkenalan Version Control System

    5/24

    5

    pelacakan, jika suatu saat terjadi kesalahan (error) pada perangkatlunak yang dikembangkan. Log juga berguna untukpendokumentasian perangkat lunak untuk membuat changelog(daftar perubahan) perangkat lunak tersebut.

    6.

    Distribusi PekerjaanInternet telah mengubah banyak hal di kehidupan manusia, tidakterkecuali pada pengembangan peragkat lunak. Dengan erainternet dewasa ini, pengembangan perangkat lunak tidak lagihanya dapat dilakukan di sebuah ruangan dimana semua anggotatim berkumpul untuk menyelesaikan pekerjaannya. Kebanyakanperangkat lunak khususnya perangkat lunak open source, memilikitim pengembang yang tersebar di seluruh belahan bumi. Denganversion control system, pekerjaan dapat didistribusikan ke semuaanggota tim pengembang dimana pun mereka berada. Masing-masing anggota tim dapat bekerja pada komputernya sendiri danmengaplikasikan perubahanya ke repository, dan anggota tim laindapat melihat perubahan yang dilakukan rekan setimnya tersebutdari belahan bumi manapun.

    1.3.

    Elemen-elemen VersionControl

    Sejauh ini kita secara konsep, kita sudah mengetahui fungsi-fungsidasar dari version control system, yaitu melakukan pelacakan,mengontrol, dan menggabungkan versi-versi dari proyek. Secarakonsep terlihat cukup sederhana, tapi untuk lebih memahami konsepdari version control system, berikut ini kita akan bahas lebih lanjutmengenai apa saja elemen-elemen pembentuk dari versioncontrol.

    1. Repositorydan workingcopyUmumnya sebuah, version control system meletakkan revisi-revisi

    proyek kedalam sebuah repository. Secara sederhana, repositoryadalah sebuah direktori yang terstruktur yang menyimpan versi-

    versi file secara terpisah di dalam sebuah server, atau bisa sajaterdiri dari beberapa server yang terdistibusi, tergantungkebutuhan. Di dalam repositoryinilah semua hasil kerja anggota timpengembang dikumpulkan dan dari repository inilah anggota timmengambil file yang akan mereka olah. Anggota tim tidakmengolah file-file lansung di repository, akan tetapi merekamengambil file dari repository kedalam komputer kemudian

    mengolahnya secara lokal di masing-masing komputer mereka.Proses pengambilan ini dinamakan checkout. File-file lokal inilahyang disebut dengan workingcopy.

  • 7/26/2019 Perkenalan Version Control System

    6/24

    6

    Masing-masing anggota tim dapat menyunting, menambah ataumenghapusfile-fileyang ada di workingcopynya. Setelah perubahandirasa cukup maka anggota tim tersebut dapat mengaplikasikanperubahannya ke dalam repository. Proses pengaplikasian inidisebut dengan proses commit.Proses commit akan menyebabkanfile-fileyang ada di workingcopymenjadi bagian dari repository. Kemudian, anggota tim yang laindapat melakukan update terhadap working copy mereka untukmemuat perubahan terakhir yang terjadi pada repository, sehingga iabisa menyesuaikan pekerjaan mereka di working copy denganperubahan terbaru tersebut. Gambar I.1 meggambarkan prosesini.

    Gambar I.1 Repositorydan workingcopy

    Konsep repository dan basis data sendiri bukan hal yang asingdalam Islam. Dalam Islam dikenal dengan konsep Lauh Mahfuzh.Menurut syariat Islam, Allah telah mencatat segala kejadian-kejadian di dalam Lauh Mahfuzh, dari permulaan zaman sampaiakhir zaman. Baik berupa kisah nabi dan rasul, azab yang

    menimpa suatu kaum, pengetahuan tentang wahyu para nabi danrasul, tentang penciptaan alam semesta dan lain-lain. Sekalipun

  • 7/26/2019 Perkenalan Version Control System

    7/24

    7

    jika kita tidak melihat segala sesuatu, semua itu ada dalam LauhMahfuzh. Sebagai mana firman Allah dalam QS.Yunus:61

    Terjemahnya :

    Kamu tidak berada dalam suatu keadaan dan tidak membaca suatu ayatdari Al Quran dan kamu tidak mengerjakan suatu pekerjaan, melainkanKami menjadi saksi atasmu di waktu kamu melakukannya. Tidak luputdari pengetahuan Tuhanmu biarpun sebesar zarrah (atom) di bumi ataupun

    di langit. Tidak ada yang lebih kecil dan tidak (pula) yang lebih besar dariitu, melainkan (semua tercatat) dalam kitab yang nyata (Lauh Mahfuzh).

    Menurut Tafsir Qurtubi, semua takdir makhluk Allah telah ditulis-Nya di Luh Mahfuz, bisa saja dihapus/ diubah oleh Allah atau

    Allah menetapkan sesuai dengan kehendak-Nya. Kemudian yangdapat mengubah takdir yang tertulis dalam Lauh Mahfuz ituhanya doa dan perbuatan baik/ usaha.

    2.

    Revisi

    Version control system tidak hanya menyimpan perubahan terkinidari proyek, akan tetapi revison control system menyimpan riwayat(history) dari setiap perubahan yang terjadi. Ketika seorang anggotatim mengubah sebuah file dalam proyek dan melakukan prosescommit, maka perubahan itu disimpan dalam bentuk revisi.Masing-masing versioncontrolsystemmemiliki definisi yang berbedaterhadap revisi. Definisi pertama yaitu revisi yang sifatnya global,dimana setiap revisi menunjukkan keadaan repository secarakeseluruhan. Definisi yang lain yaitu revisi yang sifatnya per file,

    dimana setiap revisi menunjukkan keadaan masing-masing filesecara individual.Pada revisi per file, setiapfilememiliki revisi sendiri yang terpisahdari file-file lain di dalam proyek. Contohnya, sebuah repository

  • 7/26/2019 Perkenalan Version Control System

    8/24

    8

    terdiri darifileabc.c dan bcd.c. Jikafileabc.c telah dimodifikasi dandi commit sebanyak sepuluh kali, maka version control akanmemberikan revisi ke sepuluh terhadap file tersebut, dan jika filebcd.c telah dimodifikasi dan di commit sebanyak lima kali, makarevisi nya dalah lima. Revisi per file ini dianggap kurang optimal,karena sulit untuk mengetahui keadaan repository secara umumuntuk waktu tertentu. Untuk mengetahui keadaan repositorydenganlebih mudah, versioncontrolmenyediakan fitur tagging. Fitur tanggingmemungkinkan kita untuk membuat sebuah potret (snapshot) darirepository untuk satu waktu tertentu. Snapshot ini disebut dengantag. Tag dapat dijadikan referensi untuk sebuah revisi tertenturepository secara umum. Tagging akan dibahas lagi di bagianberikutnya.Pada revisi yang sifatnya global, setiap revisi berlaku untuk semua

    file-file proyek yang pada repository. Sehingga perubahan yangdilakukan dan di commituntuk sebuahfileakan menyebabkan revisiuntuk setiapfilebertambah. Jadi, revisi 10 berarti menggambarkankeadaan keseluruhan fileproyek pada repository pada commityangkesepuluh.

    Gambar I.2 Revisi global

    Gambar I.2 diatas menunjukkan contoh repository yang

    menggunakan revisi global. Pada gambar tersbut terlihat bahwanomor revisi akan bertambah setiap dilakukan commit meskipundengan file yang berbeda. Hal ini memberikan keunggulan yangbesar dibandingkan menggunakan revisi per file, karena tidakdiperlukan untuk memperhatikan keterhubungan setiap filedengan revisi yang berbeda-beda. Akibatnya penggunaan tagmenjadi tidak terlalu penting, diakibatkan karena setiap revisiadalah snapshot dari repository maka revisi juga bisa digunakansebagai tag. Hal ini memudahkan kita untuk membandingkan

    perbedaan dari setiap revisi yang terjadi.Dengan version control system kita bisa mengambil revisi tertentuyang terdapat di dalam repository. Misalnya terjadi kesalahan pada

  • 7/26/2019 Perkenalan Version Control System

    9/24

    9

    kode program di sebuah file di revisi 11, kita dapat mengambilrevisi ke 10 dimana kode program masih berjalan normal.Selain dapat mengambil revisi tertentu, version control jugamemungkinkan kita untuk mengetahui perubahan yang terjadiantara dua buah revisi, yang disebut dengan changeset. Changesetiniberisi perubahan-perubahan yang terjadi di dalam repositoryantaradua revisi.

    3. LogsMencatat setiap perubahan terhadapfilesangat penting. Tapi yangtidak kalah penting nya yaitu mengetahui alasan dari perubahanfiletersebut dan apa efek perubahan tersebut terhadap keseluruhanproyek. Hal ini sangat penting khususnya pada file yang berisikode program. Untuk perubahan yang kecil, mungkin hal ini tidakterlalu sulit dilakukan, akan tetapi jika perubahannya besar,misalnya penambahan ribuan baris kode program, maka akansangat sulit untuk mengetahuinya.Salah satu pendekatan yang umumnya dilakukan yaitu denganmemberikan komentar pada baris-baris program yang diubahuntuk mencatat perubahannya. Akan tetapi komentar pada bariprogram terkadang susah untuk ditelusuri, telebih lagi jikaperubahan terjadi pada bagian-bagian kode program yang terpisahsatu sama lain.Versioncontrolsystemmenyediakan solusi berupa fitur logging. Ketika

    seorang anggota tim mengubah sebuah file dan melakukan commitke repository, maka version control system akan membaca log yangdisertakan oleh anggota tim pengembang tersebut baik itu berupafile teks ataupun inputan dari command line. Beberapa versioncontrol system juga menyediakan teks editor sendiri sebagai tempatmenginput logbari pengembang. Logini umumnya akan diisi olehpengembang berupa perubahan-perubahan yang ia lakukan danefeknya pada proyek secara keseluruhan.Log ini akan sangat berguna nantinya jika terjadi kesalahan pada

    perangkat lunak yang dikembangkan. Jika hal tersebut terjadimaka hal pertama yang dapat dilakukan yaitu mengecek log yangdiberikan oleh pengembang. Log juga bisa dimanfaatkan olehpengembang untuk mengecek perkerjaan yang telah dilakukanoelh pengembang lain, agar pekerjaan tidak tumpang tindih.

    4.

    TanggingSeperti yang dijelaskan sebelumnya, version control systemmenyediakan fasilitas tag untuk menangkap snapshot repository.Tanggingmemungkinkan pengembang untuk membuat menandai

    sebuah revisi dengan nama tertentu, dan biasanya dibuat sebagaipenanda (milestone) dari sebuah proyek. Misalnya, setelah dirasaselesai pada revisi ke 100, pengembang dapat memberikan tag"versi 1.0" untuk perangkat lunak yang dikembangkan. Kemudian

  • 7/26/2019 Perkenalan Version Control System

    10/24

    10

    jika ditemukan bugpada perangkat lunak tersebut, dan dilakukanperbaikan pada revisi ke 110, pengembang dapat membuat taguntuk revisi ke 110 tersebut dengan nama "versi 1.3" dansseterusnya.

    5.

    BranchingSalah satu fitur dari version control system seperti yang telah kitasinggung diatas adalah branching. Branching adalah kemampuanuntuk mengisolasi perubahan ke jalur terpisah daripengembangan. Jalur ini dikenal sebagai branch. Branch seringdigunakan untuk mencoba fitur baru tanpa mengganggu jalurutama pengembangan dengan kesalahan dan bug. Segera setelahfitur baru cukup stabil maka cabang pengembangan digabungkembali (merge) ke dalam batang utama (trunk) seperti yang terlihatpada gambar I.3. Setiap anggota tim pengembang dapat membuatbranch nya sendiri tergantung dari konfigurasi versioncontrolnya.

    Gambar I.3 Branching

    Selain itu branching juga dapat digunakan untuk membuat jalurpengembangan lain dengan tujuan untuk membuat beberapa versiperangkat lunak yang sedang dikembangkan secara paralel. Sepertiyang terlihat pada gambar I.4

    Gambar I.4 Branchingparalel

  • 7/26/2019 Perkenalan Version Control System

    11/24

    11

    Pada gambar I.3 terdapat sebuah branch yang dibuat setelah tagversi 1.0. Pengembang kemudian mengembangkan versi 1.x dibranch ini (1.1, 1.2, 1.3, dst) sedangkan pada trunk dikembang-kan ke versi 2.0.

    6.

    Mergingdan LockingPada pembahasan-pembahasan sebelumnya, telah disinggungbahwa version controlsystemsangat bermanfaat bagi pengembanganperangkat lunak secara berkelompok. Tapi permasalahan utamadalam pengembangan berkelompok belum kita bahas, yaitubagaimana jika dua orang anggota tim pengembang mengolah fileyang sama pada bagian yang sama. Misalnya si A dan si B sama-sama mengubah kode program pada baris ke 2 dan 3 pada fileabc.c. Hal ini disebut dengan collisionatau konflik.Version control system mengatasi konflik ini dengan dua metodeyaitu merging dan locking. Kebanyakan version control system akanmenggunakan salah satu dari metode tersebut, akan tetapi adajuga yang menggabungkan keduanya. Versioncontrolsystemmodernkebanyakan menggunakan metode merging karena metode lockingmemiliki banyak kelamahan.Pada metode locking, pengembang yang sedang mengolah file akanmelakukan locking(mengunci)filetersebut. Selamafileitu terkuncipengembang lain tidak diijinkan untuk mengolah file tersebut.

    Setelah pengembang tadi selesai mengolah filenya dan melakukancommit ke repository maka kunci file tersebut dibuka danpengembang lain bisa mengolahnya.Keuntungan dari metode locking adalah pengolahan file lebihteratur dan mudah dikendalikan karena sebuah file hanya bisadiolah oleh satu orang dalam satu waktu. Keuntungan lainnyaadalah lebih mudah melakukan penggabungan (merge) terhadapfile-

    filebinarymisalnyafilecitra (image). Filebinaryini sulit di gabungkansecara otomatis seperti yang dilakukan pada metode mergingyang

    akan dibahas berikutnya. Gambar I.5a sampai I.5.d menjelaskanmetode locking ini. Gambar I.5.a memperlihatkan pengembang 1melakukan checkout file abc.c kemudian melakukan lock pada filetersebut di repository.Gambar I.5.b memperlihatkan pengembang 2 ingin melakukancheckoutfile abc.c, akan tetapi karenafiletersebut terkunci maka iatidak bisa mengaksesnya. Sementara pengembang 1 mengolah fileabc.c dan mengubah isinya. Gambar I.5.c memperlihatkanpengembang 1 selesai mengolah file abc.c dan melakukan commit

    ke repositoryserta melepaskan kunci (unlock)filetersebut.

  • 7/26/2019 Perkenalan Version Control System

    12/24

    12

    Gambar I.5.a Proses Locking1

    Gambar I.5.b Proses Locking2

  • 7/26/2019 Perkenalan Version Control System

    13/24

    13

    Gambar I.5.c Proses Locking3

    Gambar I.5.d Proses Locking4

  • 7/26/2019 Perkenalan Version Control System

    14/24

    14

    Gambar I.5.d memperlihatkan pengembang 2 melakukan checkoutfileabc.c, karenafileitu sudah tidak terkunci, maka pengembang 2dapat mengaksesnya. Setelah mengakses file abc.c tersebutpengembang 2 menguncinya sehingga tidak bisa diakses olehpengembang lain.

    Adapun kelemahan dari metode lockingini adalah :a.

    Misalnya pengembang 1 mengunci file abc.c kemudian ialupa untuk membukanya dan ia harus berangkat keluarkota untuk beberapa hari. Sementara pengembang 2 inginmengakses file tersebut. Karena pengembang 1 tidak bisadihubungi terpaksa untuk membuka kunci fileabc.c harusdilakukan oleh administrator repository. Masalah seperti inidapat menyebabkan terhambatnya proses pengem-banganperangkat lunak.

    b. Bagaimana jika pengembang 1 hanya mengedit barispertama dan kedua darifileabc.c dan pengembang 2 inginmengedit baris ke sepuluh dan sebelas saja? Perubahanyang mereka lakukan tidak saling tumpang tindih dandapat dilakukan secara bersamaan. Inilah salah satukelemahan dari metode locking.

    c.

    Anggaplah pengembang 1 sedang mengolah danmenguncifileabc.c dan pengembang 2, secara bersamaanmengolah dan mengunci file cde.c Bagaimana jika kedua

    file ini saling bergantung satu sama lain dan perubahanyang dilakukan oleh pengembang 1 dan pengembang 2menjadikannya saling tidak cocok lagi. Metode lockingtidak memiliki solusi untuk mengatasi masalah ini.

    Metode kedua untuk mengatasi konflik adalah metode merging.

    Pada metode ini pengembang bebas mengolah file-file di workingcopynya tanpa perlu tahu yang dilakukan oleh pengembang lain.Dan setelah selesai mengolah file-file tersebut mereka dapatmelakukan commit ke repository dan version control system akanmengecek apakah ada collision yang terjadi akibat dua file yangdiolah secara bersamaan. Biasanya version control system secaraotomatis akan melakukan mergefile-filetersebut, akan tetapi jika halitu tidak bisa dilakukan maka versioncontrolsystemakan memberikankepada pengembang-pengembang yang melakukan perubahan

    tersebut, informasi mengenai konflik yang terjadi, agar merekadapat menyelesaikannya sendiri secara manual. Gambar I.6.asampai I.6.h akan menggambarkan metode mergeini.

  • 7/26/2019 Perkenalan Version Control System

    15/24

    15

    Gambar I.6.a Proses Merging 1

    Gambar I.6.a memperlihatkan pengembang 1 dan pengembang 2melakukan checkoutfile yang sama, karena tidak ada locking makahal ini dimungkinkan.

    Gambar I.6.b memperlihatkan pengembang 1 dan pengembang 2mengolahfileyang sama di workingcopynya masing-masing.

    Gambar I.6.c memperlihatkan pengembang 2 telah selesaimengolah file nya, melakukan perubahan terhadap file tersebut

    kemudian melakukan commitke repository.

    Gambar I.6.d memperlihatkan pengembang 1 telah selesaimengolah file nya, melakukan perubahan terhadap file tersebutkemudian ingin melakukan commitke repository. Akan tetapi karenadi repository terlah tersedia versi terbaru dari file abc.c, makapengembang 1 belum bisa melakukanprosescommitke repository.

    Gambar I.6.e memperlihatkan pengembang 1 melakukan proses

    checkout lagi atau updatedari repository, hal ini mengakibatkan versiterbaru dari file abc.c di ambil dari repository ke working copypengembang 1.

  • 7/26/2019 Perkenalan Version Control System

    16/24

    16

    Gambar I.6.b ProsesMerging2

    Gambar I.6.c ProsesMerging3

  • 7/26/2019 Perkenalan Version Control System

    17/24

    17

    Gambar I.6.d ProsesMerging4

    Gambar I.6.e ProsesMerging5

  • 7/26/2019 Perkenalan Version Control System

    18/24

    18

    Gambar I.6.f ProsesMerging6

    Gambar I.6.f memperlihatkan di working copy pengembang 1

    terjadi proses merge, dimana perubahan yang ia lakukandigabungkan dengan perubahan yang telah di commit olehpengembang 2. Proses mergeini menghasilkan versi terbaru darifileabc.c di workingcopypengembang 1.

    Gambar I.6.g memperlihatkan pengembang 1 melakukan prosescommitdari workingcopynya ke repository. Versi terbaru darifileabc.csekarang sudah terdapat di repository.

    Gambar I.6.h memperlihatkan pengembang 2 melakukan checkoutke repository, sehingga di working copy pengembang 2 juga telahberisi versi terbaru darifileabc.c

    Kelebihan utama dari metode mergingini adalah para pengembangbebas untuk bekerja dengan tidak bergantung terhadappengembang lain. Hal ini akan sangat berguna bagi proyekdimana para anggota tim pengembangnya kebanyakan bekerja dibagian-bagian yang berbeda dari proyek sehingga konflik tidaksering terjadi.

  • 7/26/2019 Perkenalan Version Control System

    19/24

    19

    Gambar I.6.g ProsesMerging7

    Gambar I.6.h ProsesMerging8

  • 7/26/2019 Perkenalan Version Control System

    20/24

    20

    Metode merging ini akan bermasalah jika komunikasi antara parapengembang tidak baik, karena jika proses mergingotomatis tidakdapat dilakukan maka merging manual harus dilakukan olehpengembang, dan proses merging manual ini hanya akan berhasiljika komunikasi antar pengembang baik. Jika komunikasi tidakbaik maka akan menghambat penyelesaian proyek.

    1.4. Subversion

    Subversion atau biasa disingkat SVN adalah salah satu implementasidari version control systemyang populer. Subversion dikembangkan olehCollabNet (http://www.collab.net) sebuah perusahaan pengembangperangkat lunak di California, Amerika Serikat. Subversion mulaidikembangkan sejka tahun 2000. Subversion mulanya dikembangkanuntuk menggan-tikan CVS (Concurrent Versioning System), sebuahversion control system yang juga cukup populer tapi fiturnya sangatterbatas. Pada tahun 2001 Subversion mulai digunakan dandidistibusikan secara opensource. Tahun 2009 Subversion di ambil oleh

    Apache Software Foundation (www.apache.org) kemudian menjaditop-levelApache Project pada tahun 2010.

    Adapun arsitektur dari subversion adalah seperti yang terlihat padagambar I.7

    Dalam arsitektur Subversion dapat dilihat beberapa komponenutama nya yaitu :

    a.

    Commandlinedan GUI AppsUntuk menggunakan Subversion di sisi klien terdapat duamacam opsi yaitu menggunakan command line denganmengetikkan perintah-perintah Subversion, ataupun bisamenggunakan GUI yang lebih intuitif dan mudahdigunakan.

    b.

    Repositoryaccess

    Untuk mengakses repository, Subversion menyediakan tigabuah metode yaitu : DAV (Distributed Authoring andVersioning). DAV ini adalah protokol yang berjalan diatasHTTP yang digunakan untuk mengolah file di web server.Subversion memanfaatkan protokol ini untuk meng-integrasikan Subversion dengan web server, sehingga kitabisa menggunakan webbrowseruntuk mengakses repository.

  • 7/26/2019 Perkenalan Version Control System

    21/24

    21

    Gambar I.7 Arsitektur Subversion

    Metode kedua yaitu dengan SVN. Metode inimenggunakan svnserve sebagai server repository. Metodeketiga adalah akses lokal. Metode ini dilakukan dengan

    mengakses lansung repository di komputer lokal, tidakmelalui jaringan. Akses ini biasanya digunakan untukkebutuhan administrasi saja, tidak untuk penggunaannormal.

  • 7/26/2019 Perkenalan Version Control System

    22/24

    22

    c. mod_dav

    Subversion memasukkan paket mod_dav untukmengintegrasikan subversion ini dengan webserverApache.

    d.

    svnservesvnserve ini adalah program bawaan dari Subversionyang dapat bertindak sebagai server standalone sehinggarepositorybisa diakses dalam jaringan komputer.

    e. BerkeleyDB dan FSFSBerkeleyDB dan FSFS adalah embedded database yangdigunakan oleh Subversion sebagai repository untukmenyimpan file. BerkeleyDB digunakan pada versi awalSubversion, akan tetapi sejak versi 1.2 Subversionmenggunakan FSFS secara default karena performansinyalebih bagus dibandungkan BerkeleyDB.

    D. Latihan

    Untuk memperdalam pemahaman anda mengenai materi pada SatuanBahasan I dipersilahkan mengerjakan latihan berikut :

    1. Buatlah rumusan mengenai vesion control system!

    2.

    Buatlah uraian mengenai Subversion !3. Carilah beberapa jenis version control system selain Subversion,

    jelaskan kelebihan dan kekurangannya masing-masing !

    E. Rangkuman

    1.

    Version control systematau juga dikenal dengan revision control systemadalah sebuah sistem yang mencatat dan melacak setiap

    perubahan (revisi) yang terjadi pada sebuahfile.2.

    Version control sistem adalah hal yang sangat penting dalampengembangan perangkat lunak, khususnya yang sifatnyakolaboratif dan terdistribusi.

    3.

    Manfaat dari menggunakan version control system sangat banyakantara lain :

    a. Menjamin integritas datab.

    Meningkatkan produktifitasc.

    Adanya akuntabilitasd.

    Memungkinkan branchinge.

    Adanya logging.f. Pembagian kerja yang baik.

  • 7/26/2019 Perkenalan Version Control System

    23/24

    23

    4. Adapun elemen-elemen version controlantara lain :a.

    Repositorydan workingcopyb.

    Revisic.

    Logsd.

    Tangginge. Branchingf. Mergedan locking

    5.

    Subversion atau biasa disingkat SVN adalah salah satuimplementasi dari version control system yang populer yang dibuatuntuk menggantikan CVS.

    6. Arsitektur Subversion terdiri dari beberapa bagian penting yaitu :a.

    Commandlinedan GUI Appsb.

    Repositoryaccessc.

    mod_dav

    d.

    svnserve

    e. BerkeleyDB dan FSFS

    F.

    Tes Formatif

    1. Jelaskan mengapa version control meningkatkan akuntabilitas

    pengembangan perangkat lunak !2. Apa perbedaan antara repositorydan workingcopy?3.

    Jelaskan perbedaan antara metode loking dan merging pada versioncontrolsystem !

    Kunci Jawaban Tes Formatif

    1.

    Version control meningkatkan akuntabilitas pengembangan

    perangkat lunak karena dengan menggunakan version control kitadapat mencatat siapa saja yang melakukan perubahan terhadapsetiap kode program dalam setiap proses pengembanganperangkat lunak, Hal ini penting karena kita dapat mengetahuisiapa yang harus bertanggung jawab jika terdapat sebuahkesalahan terjadi pada kode program dan mencegahpenyalahgunaan closed source atau proprietary code pada perangkatlunak.

    2. Repository adalah sebuah direktori yang terstruktur yang

    menyimpan versi-versi file secara terpisah di dalam sebuah server,atau beberapa serveryang terdistibusi sedangkan workingcopyadalahfile-file lokal yang ada dikomputer masing-masing anggota timpengembang.

  • 7/26/2019 Perkenalan Version Control System

    24/24

    24

    3.

    Pada metode locking, pengembang yang sedang mengolahfileakanmelakukan locking(mengunci) file tersebut. Selamafileitu terkuncipengembang lain tidak diijinkan untuk mengolah file tersebut.Setelah pengembang tadi selesai mengolah file nya dan melakukancommit ke repository maka kunci file tersebut dibuka danpengembang lain bisa mengolahnya sedangkan pada metodemerging pengembang bebas mengolah file-file di working copy nyatanpa perlu tahu yang dilakukan oleh pengembang lain. Dansetelah selesai mengolah file-filetersebut mereka dapat melakukancommitke repositorydan versioncontrolsystem akan mengecek apakahada konflik yang terjadi akibat dua file yang diolah secarabersamaan.