VCS dengan Mercurial
Halaman ini berisi informasi perintah-perintah yang umum dilakukan pada Kontrol Versi Terdistribusi Mercurial atau hg, khususnya yang berhubungan dengan proyek Kuliax.
Konfigurasi
Hal pertama yang harus kita lakukan adalah konfigurasi.
Konfigurasi hg terdapat di berkas .hgrc pada direktori home/, suntinglah dengan editor
vim ~/.hgrc
[ui] username = stwn <stwn@kuliax> ssh = ssh -C
Keterangan pada berkas .hgrc di atas, username yang digunakan adalah stwn dengan surel stwn@kuliax dan jika menggunakan SSH opsi yang disertakan adalah -C1)
Proxy
Untuk pengembang di belakang proxy tambahkan baris
[http_proxy] host = proxy_address:port
Ekstensi
Untuk memperingan ketika menjalankan hg, maka ekstensi-ekstensi secara default tidak diaktifkan pada mercurial versi terkini. Aktifkan ekstensi dengan menambah "[extensions]", contoh kita ingin mengaktifkan graphlog atau glog
[extensions] hgext.graphlog = /usr/share/python-support/mercurial-common/hgext/graphlog.py
Persiapan
Terdapat dua pilihan untuk mendapatkan repo hg yaitu menginisialisasi pohon direktori dan berkas kita (init) atau menyalin repo hg dari server (clone).
init
Perintah ini dilakukan jika kita akan melakukan setup repositori hg pertama kali. Jika terdapat repositori yang telah ada di server terdekat, gunakan clone
hg init
Perintah ini akan menginisialisasi direktori kita sekarang menjadi repositori hg, tanda-tandanya adalah munculnya direktori .hg/.
Kita perlu melakukan konfigurasi berkas-berkas mana saja yang akan di-commit ke repo hg, untuk itu kita membuat sebuah berkas konfigurasi yang mengabaikan pola-pola tertentu
vim .hgignore
syntax: glob *.orig *.rej *~ *.o tests/*.err .bootstrap.swp binary/* binary.* .lock .stage* .svn* syntax: regexp .*\#.*\#$
Umumnya jika kita melakukan clone dari server repo hg, misal milik Kuliax, di dalamnya sudah ada berkas .hgignore.
clone
Perintah ini dilakukan untuk menyalin repositori hg dari server. Untuk proyek Kuliax di code.google, kita dapat menggunakan perintah
hg clone https://kuliax.googlecode.com/hg/ kuliax
yang akan menghasilkan direktori kuliax/ berisi salinan repo Kuliax.
Operasi
parents
Untuk mengetahui status parent repo.
hg parents
status
Perintah ini digunakan untuk mengetahui status dari berkas yang ada di repositori lokal
hg status
Setelah kita mengetikkan perintah tersebut maka akan muncul baris-baris diawali dengan satu karakter tertentu, misal:
- ?: berkas belum diketahui umumnya berkas baru
- M: berkas dimodifikasi
- A: berkas ditambahkan
Tanda-tanda di atas menunjukkan operasi yang akan dilakukan pada repositori mercurial ketika dilakukan commit.
Gunakan perintah less jika keluaran baris perintah status terlalu banyak
hg status|less
add
Perintah ini digunakan untuk memberikan tanda pada berkas agar saat operasi commit ditambahkan ke repositori lokal
hg add [berkas]
Umumnya perintah add dijalankan ketika pengembang ingin selektif menambahkan satu per satu berkas yang sudah ditambahkan atau dimodifikasi.
forget
Perintah ini digunakan untuk "melupakan" berkas yang sudah ditambahkan dengan perintah `hg add`, sehingga tidak ditambahkan saat commit.
remove
Perintah ini akan menambahkan berkas ke daftar tunggu proses penghapusan saat dilakukan commit.
hg remove [berkas]
mv
Perintah ini akan memindahkan/mengganti nama berkas ke nama baru/lokasi baru.
hg mv [berkas] [lokasi]
diff
Perintah ini akan membandingkan antara revisi di dalam repo.
hg diff [berkas]
hg diff -r [revisi1] -r [revisi2] [berkas]
commit
Perintah commit ditujukan untuk melakukan perubahan pada repo hg, kita harus menyertakan pesan agar orang lain, termasuk diri kita sendiri, dapat mengetahui apa yang kita ubah pada saat itu.
Contoh perintah yang umum adalah
hg commit -m "pesan perubahan"
Perintah di atas dapat dilakukan jika kita sudah melakukan operasi seperti add dan modify.
Pada proyek Kuliax untuk kepraktisan gunakan secara langsung perintah commit sekaligus melakukan operasi perubahan
hg commit -A -m "pesan perubahan"
Contoh awal pada saat inisialisasi repo
hg commit -A -m "Init hg repo for Kuliax"
push
Perintah push dilakukan untuk menyalin perubahan repo lokal ke tempat lain, umumnya server di luar. Kuliax sendiri menggunakan code.google dan bitbucket, untuk melakukan push ke server-server tersebut kita gunakan perintah
hg push https://kuliax.googlecode.com/hg/
hg push https://bitbucket.org/stwn/kuliax
Kita akan dimintai username dan password, kecuali kita sudah menambahkan kunci publik pada server repo khususnya bitbucket.
pull
Perintah ini digunakan untuk mengambil perubahan dari repositori mercurial remote ke lokal.
Pull and update repo.
hg pull https://bitbucket.org/stwn/kuliax
pulling from https://bitbucket.org/stwn/kuliax real URL is https://bitbucket.org/stwn/kuliax/ searching for changes adding changesets adding manifests adding file changes added 2 changesets with 6 changes to 6 files (run 'hg update' to get a working copy)
hg update
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
hg parents
changeset: 8:6b65794a95dd tag: tip user: stwn <stwn@kuliax.org> date: Thu Mar 19 11:42:57 2009 +0000 summary: fix live/ dir addition
tip
Perintah tip digunakan untuk melihat status set perubahan terakhir.
hg tip
update
Perintah ini digunakan untuk memutakhirkan direktori kerja ke revisi tertentu.
hg update
merge
Perintah ini digunakan untuk menggabungkan isi direktori repositori sekarang dengan revisi tertentu
hg merge
Umumnya perintah merge dilakukan ketika dilakukan pengambilan perubahan dengan pull, setelah itu pengembang perlu melakukan `hg status` untuk melihat status berkas, dan commit untuk menerapkan perubahan pada repositori lokal.
revert
Perintah ini digunakan untuk mengembalikan revisi berkas sebelumnya
hg revert [berkas] rm [berkas].orig
atau
hg revert -r [REV] [berkas]
tag
Perintah ini digunakan untuk melakukan tag terhadap revisi tertentu
hg tag -r [REV] -m "Tag notes" [tag]
contoh:
hg tag -r 32 -m "Tag revision 32: 7.0rc1" 7.0rc1
branch
Branching repo.
hg branch repo-branch
hg commit -m "creating new branch of repo"
hg tip
hg parents
hg push https://bitbucket.org/stwn/kuliax
glog
Watch log in tree mode.
hg glog
serve
Serve your repo via http protocol,
hg serve -n "kuliax" -p 1234
Contoh Operasi
hg clone kuliax.sync/ kuliax cd kuliax [modify here] [when it works and you satisfied with the result] hg push #push to kuliax.sync cd ../kuliax.sync hg update hg push ssh://hg@bitbucket.org/stwn/kuliax/
Menggunakan SSH
Using Mercurial with SSH.
ssh-keygen cat ~/.ssh/id_rsa.pub hg push ssh://hg@bitbucket.org/stwn/kuliax/