Secara konsep, mercurial berbasis python yang menjadikannya lebih "lambat" sedikit daripada Git yang berbasis C/C++. Sebaliknya, Mercurial lebih pintar daripada Git stupid content tracker dalam hal mememasukkan file ke repository (hg add), sedangkan git memasukkan file (git add) ke "stage". Impactnya, kita cuma perlu sekali saja meng- "hg add" sebuah file dalam repo. Git perlu "git add" setiap kali ada perubahan.
Instalasi
Pertama kita perlu tahu apakah Mercurial sudah terinstall atau belum pada komputer (Ubuntu) kita. Cek dengan,
$ hg --version
Jika tidak ada nomor versinya maka belum terinstall. Mercurial bisa diinstall melalui apt-get ataupun pip install.
$ sudo apt-get install mercurial
atau
$ sudo pip install mercurial
Ya, seharusnya dengan salah satu perintah di atas, mercurial sudah bekerja di komputer kita. Saya lebih prefer dengan cara pertama (apt-get) daripada instalasi melalui python (pip). Cek lagi dengan "hg --version" untuk mengetahui berhasil tidaknya instalasi mercurial.
Repository setup
Siapkan beberapa file yang akan ditambahkan pada repository
$ mkdir nama-repo $ cd nama-repo
Buat beberapa text untuk diimport pada repository. Misal buat tiga text file sebagai berikut
$ echo "foo" >> foo.txt $ echo "bar" >> bar.txt $ echo "baz" >> baz.txt
Untuk menghost repository di internet, kita menggunakan bitbucket.org yang menyediakan layanan hg mercurial free unlimited (really!). Ada dua cara untuk membuat repo baru, bisa dari bitbucket.org secara langsung, atau membuat secara local di PC kita kemudian mengimportnya.
Cara I
Jalankan "hg init" untuk mulai menginisiasi directory yang dikontrol dengan hg mercurial
$ hg init
Perintah tersebut akan menghasilkan directory .hg. Kita bisa mengisi informasi didalam file .hg/hgrc dengan path repo yang sebelumnya kita buat di bitbucket.org.
Pada .hg/hgrc, isikan:
[paths] default = https://username@bitbucket.org/username/nama-repo
Selain itu kita juga perlu menambahkan identitas hg mercurial kita pada /home/.hgrc sebagai berikut:
[ui] username = My Name
That's it. Kita bisa mulai membuat repo baru di bitbucket dan mengimpornya.
Cara II
Cara kedua adalah dengan membuat repo dulu di bitbucket, baru kemudian mengimpornya. Dengan cara pertama pun kita juga harus membuat repo di bitbucket sbb:
Bitbucket.org >> Repositories >> Create RepositoryKetikkan nama repository, pilih level akses: publik atau private, dan pada repository type, pilih mercurial, kemudian klik create repository. Untuk cara pertama kita langsung mengimpornya dengan "hg push", sedangkan cara dengan cara kedua ini kita lakukan dengan "hg clone".
$ hg clone https://username@bitbucket.org/username/nama-repo
Kemudian pindah ke directory hasil "cloning", misal:
$ cd nama-repo
dan pindahkan semua file yang akan dikontrol dengan mercurial ke folder "nama-repo" tersebut (foo.txt, bar.txt, baz.txt). Selanjutnya tambahkan dan commit serta push,
$ hg add ./* $ hg commit -m "commit pertama" $ hg push
mercurial akan konek dengan bitbucket dan meminta password bitbucket kita. Setelah memasukkan password, proses updating dimulai dan semua file anda sudah berada direpository bitbucket. cek dengan "hg status".
Workflow
So far, workflow hg mercurial adalah sbb: hg add, hg commit, hg push. Perintah-perintah lain yang penting adalah: hg status, hg summary, hg diff dan hg log. Jika repository kita diupdate dari bitbucket langsung atau dari komputer lain, maka workflow untuk mengupdate repo local di komputer kita adalah
$ hg pull $ hg merge $ hg update
Perintah pull, merge da update tersebut akan menyikronkan repo local di komputer kita dengan versi terbaru repo di bitbucket.
Solving Conflict/ Force pull
Ada kalanya karena di-edit pada saat yang bersamaan, akan terjadi konflik di repository. Artinya, versi di repository lebih baru dari yang kita edit dan kita tidak bisa mem-push atau me-merge-nya. Solusi pertama adalah me-rename file tersebut dan kemudian mem-force pull. Caranya,
$ hg update -C $ hg resolve --all
kemudian pull, merge dan update. Cara kedua adalah langsung me-force pull dengan perintah diatas. Ini artinya, file kita akan di-overwrite dengan file yang ada di repository.
Selamat mencoba.
*) Repo tutorial ini bisa dilihat pada bitbucket.org/bagustris/hg-tutorial/, file tersebut merupakan materi workshop Scientific Computing 2016 di Trieste, Italy.