Bazaar (http://www.bazaar-vcs.org) adalah distributed Version Control System (VCS) atau Source Code Management (SCM) yang bersifat opensource dan disponsori oleh Canonical (perusahaan yang mensponsori sistem operasi Ubuntu Linux). Intinya sih sama dengan SCM lain seperti CVS, SVN atau git, bagaimana supaya banyak programmer yang mengerjakan suatu aplikasi tidak saling menimpa sourcecode dan berbagai isu manajemen coding bareng.
Selama menggunakan SVN ada beberapa wacana yang sering membuat saya garuk-garuk kepala: merge code, koneksi internet (tidak selalu bisa terhubung dengan SVN upstream) dan distributed SVN repo (versi server online, versi server kantor, versi laptop lokal) yang kesemuanya saya harapkan lebih tersolusikan di bazaar (selain termakan promo si Hendy Ceefour, ada kepentingan belajar bazaar juga untuk project BlankOn Linux yang terkait erat dengan Ubuntu – Canonical – Launchpad.net – Bazaar).
Instalasi
Di Ubuntu Linux (atau Debian dan turunannya), ketikan:
$> sudo apt-get install bzr bzr-gtk bzr-svn
Konfigurasi Penulis Kode
Di kolaborasi penulisan kode seperti VCS atau SCM kita perlu mengetahui perubahan apa ditulis oleh siapa dan kapan. Bazaar secara default mencatat username kita di Linux sebagai username bazaar juga. Untuk merubahnya kita bisa menggunakan perintah:
$> bzr whoami “Nama Kita <alamat@email>”
Membuat Branch Baru (di server)
Kita akan membuat suatu repositori sourcecode di server, disini contohnya adalah repositori sourcecode untuk project Toombila.
$> mkdir /home/niwatori/bazaar/toombila
$> cd /home/niwatori/bazaar/toombila
$> bzr init
Sekarang kita telah memiliki sebuah repositori sourcecode di /home/niwatori/bazaar/toombila, selanjutnya adalah menambahkan sourcecode dari manapun ke bazaar kita tersebut. Dan kita tidak hanya sekedar meng-copy file ke direktori tersebut karena file-file di lingkungan kerja bazaar memiliki beberapa jenis status: unknown, ignored, versioned. Jika suatu file dibuat/dicopy maka statusnya adalah uknown, untuk tercatat di database bazaar maka file tersebut harus di-add atau di-commit terlebih dahulu (jangan lupa setiap commit tambahkan -m/message/memo untuk keperluan informasi dan log).
$> cp -R /mnt/sda1/toombila/* /home/niwatori/bazaar/toombila
$> bzr add
$> bzr commit -m "Pertamax.."
Supaya publik bisa mengakses repositori sourcecode secara anonymous bisa digunakan web server existing. Cara termudah adalah dengan mengarahkan direktori bazaar kita ke direktori htdocs web server (pada contoh ini telah tersedia web server Apache yang htdocsnya ada di /var/www).
$> sudo ln -s /home/niwatori/bazaar /var/www/bazaar
Kini kita sudah bisa mengakses http://alamathostserver/bazaar/toombila
Membuat Branch (di lokal)
Masuklah ke direktori tempat anda biasa menyimpan project-project anda dan buat branch lokal di direktori baru yang anda inginkan (misal: toombila_core).
$> cd /home/niwatori/rails
$> bzr branch http://alamathostserver/bazaar/toombila toombila_core
Kini branch kita sudah tersedia di /home/niwatori/rails/toombila_core
Mengexport Branch (di lokal maupun server)
Saat produksi atau deployment sering kita membutuhkan direktori-direktori aplikasi kita bersih dari file bazar (.bzr), salah satu cara menghasilkannya dengan export.
$> cd /home/niwatori/rails/toombila_core
$> bzr export ../cadangan
Kini aplikasi bersih tersedia di /home/niwatori/rails/cadangan
…
Mengupdate Perubahan Terbaru ke Server (dari lokal)
Untuk mengupdate perubahan kode terbaru di lokal ke Branch server kita gunakan perintah push, bisa dianalogikan dengan perintah commit pada SVN. Sebelumnya pastikan kita sudah melakukan commit lokal.
$> cd /home/niwatori/rails/toombila_core
$> bzr add
$> bzr commit
Lalu lakukan push dengan menggunakan account SSH:
$> bzr push bzr+ssh://username@alamathostserver/home/niwatori/bazaar/toombila
Mengupdate Perubahan Terbaru dari Server (ke lokal)
Untuk mengupdate versi kode lokal dengan versi kode terbaru dari Branch server kita gunakan perintah pull, bisa dianalogikan dengan perintah update pada SVN.
$> cd /home/niwatori/rails/toombila_core
$> bzr pull http://alamathostserver/bazaar/toombila