Perintah dasar Bazaar

Kira-kira inilah perintah-perintah dasar kalau ingin menggunakan Bazaar.

  1. Membuat sebuah cabang baru.

    $ bzr init
    

    Perintah tersebut dijalankan di bawah sebuah direktori yang akan menjadi cabang.

  2. Menambahkan berkas/direktori ke dalam cabang.

    $ bzr add satu dua tiga ...
    

    Andai tidak ada berkas/direktori yang disebut, maka seluruh berkas atau direktori yang ada akan dimasukkan.

  3. Menyimpan perubahan.

    $ bzr commit
    

    Sebuah editor akan terbuka. Tulis catatan revisi di sana. Simpan lalu keluar dari editor agar perubahan tersimpan ke dalam cabang Bazaar.

  4. Menghapus berkas/direktori.

    Hapus saja berkas/direktori yang ingin dihapus, lalu jalankan bzr commit.

Sebenarnya sudah itu saja perintah-perintah dasarnya. Namun rasanya kurang lengkap kalo tidak dilanjutkan dengan beberapa perintah dasar-namun-sedikit-lanjutan yang juga berkaitan dengan pengerjaan secara bersama-sama.

  1. Membuat cabang baru dari sebuah cabang Bazaar

     $ bzr branch utama baru
    

    Cabang Bazaar bernama utama akan disalin menjadi sebuah cabang baru bernama baru.

  2. Menarik perubahan dari cabang induk.

    $ bzr pull http://repo/bzr/utama/
    

    Ada kalanya perubahan gagal ditarik karena cabang induk tersebut telah mengalami perubahan. Jika hal ini yang terjadi, maka operasi yang harus dilakukan adalah penggabungan cabang.

    $ bzr pull http://sebuah/cabang/
    bzr: ERROR: These branches have diverged. Use the merge command to reconcile them.
    
  3. Menggabungkan cabang yang ada dengan cabang yang lain.

    $ bzr merge http://repo/bzr/lain/
    

    Jika beruntung, operasi dapat berjalan lancar tanpa ada gangguan apa-apa.

    $ bzr merge http://sebuah/cabang/
    ...
    All changes applied successfully.
    

    Penggabungan cabang dengan bzr merge ini tidak langsung disimpan menjadi revisi baru. Oleh karena itu perlu dilakukan penyimpanan dengan bzr commit.

    Konflik bisa saja terjadi pada saat menggabungkan cabang. Hal ini disebabkan karena ada berkas sama yang mengalami perubahan secara terpisah pada kedua buah cabang.

    $ bzr merge http://sebuah/cabang/
    ...
    Text conflict in sebuahberkas
    1 conflicts encountered.
    

    Berkas yang konflik biasanya akan ditandai dengan akhiran .BASE, .OTHER, .THIS. Berkas yang diakhiri .BASE adalah versi dasar bersama dari kedua cabang yang mengalami konflik. Berkas dari versi cabang yang ada ditandai dengan akhiran .THIS sedangkan berkas dengan akhiran .OTHER adalah versi dari cabang lain yang digabungkan.

    induk +--> satu ----+--> satu -->
          |            /
          +--> dua  --'
    

    Sebagai ilustrasi, andai ada cabang bernama induk yang disalin menjadi dua cabang baru, yaitu satu dan dua. Ada sebuah berkas bernama index.html pada cabang induk yang kemudian dimodifikasi secara terpisah pada cabang satu dan dua. Ketika cabang satu ingin melakukan penggabungan cabang dengan cabang dua, maka berkas index.html tadi akan mengalami konflik karena berkas tersebut telah mengalami modifikasi.

    Berkas index.html asli yang berasal dari cabang induk akan diberi nama index.html.BASE. Berkas yang berasal dari cabang dua akan diberi nama index.html.OTHER sedangkan index.html.THIS berasal dari cabang satu, yaitu cabang yang sedang dikerjakan.

    Cabang yang ingin digabungkan haruslah berasal dari satu cabang induk yang sama. Jika tidak, maka penggabungan tidak dapat dilakukan karena tidak dapat ditelusuri perubahan yang terjadi.

    $ bzr merge http://cabang/tetangga/
    bzr: ERROR: Branches have no common ancestor, and no merge base revision was specified.
    
  4. Mengatasi konflik.

    $ bzr resolve berkas-konflik
    

    Sebagai contoh ada berkas konflik bernama index.html. Perbaikilah berkas tersebut lalu jalankan

    $ bzr resolve index.html
    

    Berkas lain .BASE, .THIS, dan .OTHER akan dihapus setelah konflik diatasi.

  5. Menyimpan perubahan ke cabang lain.

    $ bzr push bzr+ssh://repo/bzr/utama/
    

    Cabang yang ingin disimpan haruslah merupakan kelanjutan dari cabang tujuan. Jika tidak, maka proses penyimpanan akan gagal.

    $ bzr push bzr+ssh://repo/bzr/utama/
    bzr: ERROR: These branches have diverged.  Try using "merge" and then "push".
    

    Oleh karena itu, cabang yang ada harus disinkronsasi dengan cabang tujuan tersebut dengan menjalankan bzr merge yang kemudian diikuti dengan bzr push untuk mengulangi penyimpanan.

    Seperti halnya menggabungkan cabang, menyimpan cabang yang ingin disimpan ke cabang lain haruslah berasal dari satu cabang induk yang sama.

  6. Membatalkan perubahan.

    $ bzr revert sebuah-berkas
    

    Andai kita memodifikasi berkas bernama index.html namun sampai suatu ketika kita ingin membatalkan perbuahan tersebut dan mengembalikkannya ke versi terakhir yang tersimpan dalam cabang bzr. Maka kita cukup menjalankan perintah berikut

    $ bzr revert index.html
    

    Sebuah berkas bernama index.html.~1~ akan terbentuk dan berisi perubahan yang sempat kita lakukan. Selain itu, berkas index.html akan berubah isinya sesuai dengan versi terakhir yang ada.

    Jika berkas index.html kita hapus lalu kita menjalankan bzr revert index.html, maka berkas index.html akan muncul kembali dengan isi dari versi terakhir. Berkas index.html.~1~ tidak akan terbentuk karena tidak ada berkas perubahan.

    Jadi, andai suatu ketika merasa perubahan yang dilakukan sangat kacau dan ingin diulang semua, hapus saja semua berkas yang ada lalu panggil bzr revert.

    $ rm -rf *
    $ bzr revert
    

Sepertinya itu dulu. Kalau sudah paham perintah-perintah di atas, saya rasa sudah bisa lah menggunakan Bazaar untuk keperluan sehari-hari termasuk menjadi pengembang BlankOn =D

Oh iya. Cabang Bazaar ini memang bisa dianggap sebagai satu direktori beserta isinya. Sehingga kalau ingin menyalin maupun mengamankan sebuah cabang Bazaar, cukup simpan direktori tersebut. Lebih tepatnya, direktori .bzr yang ada di dalamnya. Direktori .bzr tersebut berisi seluruh catatan revisi yang dilakukan dari awal cabang dibuat.

1 thought on “Perintah dasar Bazaar”

  1. Om, makasih perintah dasarnya… tanya : ada nggak gambaran virtual tentang bazaar, biar bisa ngebayangin di benak niih… bisa dalam bentuk diagram, atau analogi sehari2…

Leave a Reply