Subversion merupakan sebuah tools open source yang digunakan sebagai tempat penyimpanan source code dalam pembangunan aplikasi. Tools tersebut dibutuhkan terutama jika pembangunan dilakukan oleh tim yang memungkinkan terjadinya perubahan terhadap file secara bersamaan oleh anggota tim. Tetapi, jika anda melakukan pembangunan aplikasi sendirian pun, anda masih dapat pula mengambil manfaat dari penggunaan subversion dimana semua source code anda dapat terkumpul di satu tempat dan terdapat history perubahan dari aplikasi yang dibuat.
Salah satu hal yang menarik dari subversion adalah fitur yang memungkinkan melihat source code melalui web front end. Untuk itu dibutuhkan sebuah web server yang akan melayani pengaksesan subversion melalui protokol http tersubut. Integrasi antara subversion dengan web server Apache akan dibahas dalam blog ini sebagai bagian dari setting subversion.
Selain subversion, tools serupa yang dapat digunakan untuk dijadikan sebagai tempat penyimpanan source code adalah CVS. Di dalam blog ini saya tidak akan melakukan perbandingan antara subversion dan CVS.
Instalasi
Instalasi dari subversion sendiri bukanlah hal yang sulit, terutama karena telah tersedia paket-paket dari distributor linux untuk subversion. Paket di bawah ini merupakan paket dari subversion sendiri:
1. subversion -- Subversion client
2. subversion-server -- Paket subversion server
Kemudian untuk integrasi dengan apache dibutuhkan paket-paket di bawah ini
1. apache2
2. apache2-prefork
3. libapr1
4. libapr-util1
5. neon
untuk instalasi di suse menggunakan rpm package dapat dilakukan (sebagai root) :
# rpm -ivh RPM_PACKAGE_FILEperintah tersebut akan menginstall package yang dimaksud dan melakukan pengecekan terhadap package lain yang dibutuhkan. Jika terdapat paket-paket yang dibutuhkan, cari package tersebut dan install.
Lokasi Repository dan User Password
Directory untuk subversion repository dapat diletakkan di mana saja dalam file system. Dalam contoh ini saya akan menggunakan /opt/svn sebagai tempat penyimpanan
# mkdir -p /opt/svn/reposPerhatikan di langkah ke empat, kita menggunakan root:www yang artinya file tersebut merupakan milik dari root dan group www, yang merupakan group dari user yang menjalankan server apache. Sesuaikan
# mkdir /opt/svn/user_access
# touch /opt/svn/user_access/svn_passwdfile
# chown root:www /opt/svn/user_access/svn_passwdfile
# chmod 640 /opt/svn/user_access/svn_passwdfile
Pada langkah ketiga di atas, kita membuat sebuah file yang akan digunakan untuk menampung data user dan password dari pengguna subversion yang boleh melakukan perubahan terhadap source code. Kita dapat pula membedakan hak akses user berdasarkan project. Untuk itu, kita harus membuat file yang berbeda untuk project yang berbeda. Misalnya kita memiliki project dengan name cool_project, kita dapat membuat file sebagai berikut:
# touch /opt/svn/user_access/cool_project_svn_passwdfileDemikian seterusnya untuk project yang berbeda. Dengan cara ini kita dapat membatasi user-user terhadap project yang boleh mereka ubah. Untuk menambah user gunakan perintah yang dimiliki oleh apache, yaitu
# chown root:www /opt/svn/user_access/cool_project_svn_passwdfile
# chmod 640 /opt/svn/user_access/cool_project_svn_passwdfile
# htpasswd2 /opt/svn/user_access/svn_passwdfile YOUR_USER_NAMEmasukkan password yang diinginkan dua kali.
Integrasi Apache Subversion
Integrasi apache dan subversion membutuhkan aktivasi dari module di apache, yaitu:
1. dav
2. dav_svn
Untuk itu, lakukan perintah berikut sebagai root:'
# a2enmod davAtau, tambahkan langsung module dav dan dav_svn di file /etc/sysconfig/apache2 pada bagian APACHE_MODULES. Setelah module ditambahkan edit file /etc/apache2/conf.d/subversion.conf untuk menunjukkan pada apache letak dari repository kita.
# a2enmod dav_svn
# vi /etc/apache2/conf.d/subversion.confmasukkan baris-baris di bawah ini:
<ifModule mod_dav_svn.c>Jika kita ingin menggunakan file password yang berbeda untuk project yang berbeda, maka kita perlu membuat
# Set up single repository directory 'kdrepos'
# This has open read access, but limited write (commit) access
<Location /repos>
DAV svn
SVNParentPath /opt/svn/repos
# Allow the 'repos' index page to list all the repositories it contains
SVNListParentPath On
# Limit write permission to list of valid users.
<LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
# Message to give to the committer
AuthName "Write access requires a password"
# File listing users with write (commit) access
AuthUserFile /opt/svn/user_access/svn_passwdfile
Require valid-user
</LimitExcept>
</Location>
</ifModule>
<Location /repos/coolproject>Setelah setting ini selesai, anda dapat melakukan restart apache, untuk mengaktifkan konfigurasi
DAV svn
SVNParentPath /opt/svn/repos/coolproject
SVNListParentPath On
<LimitExcept GET PROPFIND OPTIONS REPORT >
AuthType Basic
AuthName "Write access requires a password"
AuthUserFile /opt/svn/user_access/cool_project_svn_passwdfile
Require valid-user
</LimitExcept>
</Location>
# /etc/init.d/apache2 restartProject Repository
Jika tidak terdapat permasalahan ketika kita melakukan restart apache, maka kita dapat melanjutkan dengan mempersiapkan subversion repository untuk project kita. Proses ini harus dilakukan untuk masing-masing project yang ingin kita tambahkan:
# svnadmin create /opt/svn/repos/myprojectDua perintah di atas pertama membuat struktur directory untuk project dengan nama myproject. Kemudian kita memberikan hak akses kepada apache untuk melakukan penulisan ke directory dav, db dan locks di bawah directory project kita. Sekali lagi perlu diperhatikan user dan group yang menjalankan apache sendiri, dan sesuaikan dengan setting anda.
# chown -R wwwrun:www /opt/svn/repos/myproject/{dav,db,locks}
Setelah langkah di atas, kita dapat melakukan import dari source code yang sudah kita miliki ke subversion repository. Tetapi, merupakan langkah yang baik untuk membagi directory project kita ke dalam beberapa directory lagi, untuk digunakan kemudian. Lakukan perintah berikut menggunakan svn client (Tidak harus sebagai root) :
> svn mkdir http://localhost/repos/myproject/trunkPada dasarnya langkah di atas meminta svn client melakukan pembuatan directory di bawah directory project yang sudah dibuat sebelumnya. Perhatikan penggunaan akses http ketika kita membuat directory. Ini menunjukkan integrasi apache dengan subversion kita telah berjalan.
> svn mkdir http://localhost/repos/myproject/branches
> svn mkdir http://localhost/repos/myproject/tags
Directory yang kita buat ada tiga buah, trunk, branches dan tags. Mengapa kita membutuhkan directory sebanyak itu untuk project kita. Merupakan kebiasaan yang baik untuk mempersiapkan kemungkinan pengembangan ke depan sebagai berikut:
Setelah itu, kita dapat mulai memasukkan source code yang sudah kita miliki pada saat ini:
> svn import /path/to/myproject/dir http://localhost/repos/myproject/trunkPerhatikan bahwa kita melakukan import source code kita ke dalam directory trunk. Ganti /path/to/myproject/dir dengan directory tempat anda menyimpan project anda. Jika berhasil, kita perlu mencoba untuk melakukan checkout dari project yang baru saja kita masukkan:
> svn co http://localhost/repos/myproject/trunk theprojectDengan perintah di atas akan terbentuk directory theproject yang berisi source code yang sebelumnya telah kita import. Sekarang, kita dapat mulai melakukan perbaikan terhadap sistem yang di bangun di directory theproject tersebut.
Jangan lupa, setelah anda selesai mengedit sebuah file, lakukan perintah 'commit' sehingga perubahan akan terkirim kembali ke repository.
> svn commit theprojectUntuk melakukan 'commit' terhadap keseluruhan project, atau untuk melakukan commit pada satu file perintah dapat diubah menjadi
> svn commit theproject/myfile.phpPenutup
Pada tulisan ini telah dibahas mengenai cara untuk melakukan instalasi subversion repository dan integrasinya dengan Apache di linux terutama untuk Opensuse. Prinsip yang sama dapat digunakan di distribusi linux yang lain, tetapi beberapa setting perlu disesuaikan.
Tidak ada komentar:
Posting Komentar