Welcome to Abdul Malik Ikhsan's Blog

Version Control menggunakan Bazaar

Posted in Teknologi, tips and tricks by samsonasik on June 20, 2009

Version control atau biasa kita sebut SCM (Source code Management) adalah management source ,dokumen, program, dan file komputer yang lain. Dengan adanya Version Control ini, segala perubahan akan dicatat dan diidentifikasikan dengan revision number, –akan sangat berguna untuk kerja tim, agar pekerjaan tidak tumpang tindih, dan untuk control revisi source–. Ada banyak Version control yang bisa kita download, antara lain: SVN, Git, Mercurial, Bazaar, dan lain-lain. Pada dokumentasi kali ini, kita akan coba mengupas tentang Bazaar,  Jika kita menggunakan ubuntu, kita bisa install dengan cara apt-get install bzr bzrtools , kalau yg lain, bisa download sendiri , nah, bagaimana cara mempergunakan tools ini ? Berikut langkah2 yang harus dilakukan :


1. Membuat repository

Direktori ini berisi file2 yang nantinya bisa dicloning oleh banyak user. Untuk lebih jelasnya, akan saya beri contoh sederhana :

a. Saya buat direktori /media/disk-1/repositories/documentation

b. Buat direktori di dalamnya bernama RepoDocumentation

c. Buat contoh file yang akan kita clone, misal RepoTest.java

class RepoTest {

public RepoTest() {

System.out.println(“object RepoTest terbentuk”);

}

public static void main(String args[]) {

new RepoTest();

}

}

d. Init repo:

e. Add file-file dalam direktori

f. Kalau ada file yg ditambahkan, berarti ada perubahan, maka kita harus commit perubahan tersebut agar bisa diclone jg oleh user lain :


2. Checkout

Untuk mengkloning file repository kita, maka kita harus mengkloning dengan cara checkout, atau bisa juga branch, untuk dokumentasi kali ini, saya akan mencoba memakarkan tentang checkout saja.

Misal, user A ingin kloning seluruh file  di folder repository Repocumentation di direktory /media/disk-1/workspace/A

Lalu, user B ingin kloning seluruh file  di folder repository Repocumentation di direktory /media/disk-1/workspace/B

3. Update

Ceritanya, user A, melakukan perubahan di file RepoTest.java

class RepoTest {

public RepoTest() {

System.out.println(“object RepoTest terbentuk”);

}

public void go()

{

System.out.println(“Start the Game”);

}

public static void main(String args[]) {

new RepoTest().go();

}

}

user menambahkan method go() dan menambahkan .go() setelah new RepoTest() , maka user A harus meng-commit file tersebut agar user B bisa mendapatkan file paling up to date.

Kemudian, user B bisa mengupdate perubahan tersebut (sebelumnya, bisa mengecek status up to date file):

maka, otomatis, user B telah mengupdate perubahan yg terjadi .

4. Konflik

Pada kasus di atas, tidak akan terjadi masalah karena user B mengupdate file dari perubahan user A tanpa melakukan perubahan terlebih dahulu. Akan tetapi, jika user B melakukan perubahan pula, dan user A melakukan commit file terlebih dahulu (jika beda line , maka akan saling melengkapi, jika pada line yang sama, maka bazaar akan membuat 3 versi file, yaitu file sebelum diubah (BASE), file setelah diubah user B (THIS), dan file yg telah dicommit oleh user A (OTHER)).

Contoh user A mengganti method go() menjadi method mulai() lalu melakukan commit, kemudian user B mengganti method go() menjadi method start() :

maka ketika user B, melakukan bzr up , akan tampil seperti berikut :

Lalu, setelah dicek, benar akan terjadi 3 file :

Nah, di sinilah waktu nya user A dan user B berkomunikasi, he..he.., setelah itu menentukan file mana yg benar, punya A, punya B, atau mau dibalikkan ke kondisi seperti semula :

anggap saja yg benar adalah file punya B, berarti kita harus copykan isi file yang THIS ke file yang diubah,setelah itu, kita tentukan kebenaran file dengan cara di resolve :

jangan lupa, harus dicommit lagi :

setelah itu, user A bisa mengupdate :

Leave a comment