Terkadang suatu project mercurial sudah sangat lama, nyaris satu dekade, jumlah history-nya sangat banyak sehingga proses clone sukar dilakukan apalagi jika jaringan terbatas. Mercurial tidak memiliki pause and resume dan bahkan rollback setiap kali gagal sehingga mau tak mau proses clone harus dipecah menjadi beberapa proses pull.
Berikut adalah langkah-langkah memecah proses clone.
1. Buat folder baru tempat project mercurial tersebut akan di-clone.
2. Clone hingga revisi tertentu, baik menggunakan aplikasi seperti TortoiseHg atau menggunakan perintah hg clone.
Sebaiknya gunakan revisi yang cukup kecil namun sebagian source code-nya sudah ada misalnya revisi ke-4.
contoh:
hg clone -r 4 http://bitbucket.org/edwinang/owi
3. Selidiki ada berapa revisi yang dimiliki oleh project mercurial tersebut.
Cara paling mudah adalah menggunakan aplikasi
tortoiseHg, dan coba
pull semua baik lewat fitur
workbench atau fitur
synchronize dan lihat ada berapa
changeset yang dimiliki
project tersebut.
Alternatifnya, jika menggunakan perintah command-line, maka buat agar semua progress terlihat dengan syntax
hg pull --verbose --debug
Perhatikan ketika outputnya mulai menyatakan
adding changeset dan perhatikan berapa changeset yang muncul.
Misal, saat menampilkan
changeset terakhir layar keluaran menyatakan seperti ini:
changesets :11121 chunks
add changeset 044db2dcc931
Artinya saat ini
project-nya memiliki 11121
changeset and
changeset terakhir memiliki
Node ID 044db2dcc931
Sebenarnya, untuk contoh ini, (sumber
bitbucket.org/edwinang/owi di tanggal 28th April 2015)
Node ID lengkapnya adalah 044db2dcc931faf11738b5d195e2507c932df058
Jika informasi
changeset terakhir terlewat, ketika proses
adding manifest, total
changeset bisa terlihat.
Misalkan, output-nya menyatakan
manifest: 1085/11121 chunks (9.76%)
Artinya saat output tersebut, aplikasi
hg sedang mengunduh
manifest untuk
changeset ke-1085 dari jumlah total 11121
changeset.
Sebenarnya, berarti ada 11125 revisi (karena saat clone pertama kita di revisi 4).
Setelah mengetahui jumlah total
changeset, maka rencanakan berapa kali dan di revisi2 ke berapa saja akan dilakukan
pull.
4. Lakukan
pull untuk revisi tertentu sesuai rencana
hg pull --verbose --debug -r [nomorrevisi]
5. Lakukan
update setelah
pull revisi tersebut.
hg update --clean
6. Ulangi langkah keempat hingga semua
changeset sukses terunduh.
Jika komponen yang sedang diunduh tampak lama sekali tanpa ada kemajuan, sebaiknya pasang sniffer seperti
Wireshark untuk mengendus apakah aplikasi
hg menyerah atau masih sedang berusaha mengunduh. Gunakan filter ip address server asal lokasi misalnya filter di Wireshark bisa diatur seperti berikut:
ip.addr == [no].[ip].[add].[ress]
contoh:
ip.addr == 131.103.20.0/16
Jika karena suatu sebab, unduhan terputus dan transaksi tidak berlanjut dan tak bisa rollback, gunakan mercurial recover
hg recover --verbose --debug
Selamat mengunduh project Mercurial!
Tambahan:
kadang satu project terdiri dari beberapa cabang.
Untuk
pull sebuah project, pakai parameter
-b , contohnya
hg pull -r [version no] --verbose -- debug -b [branch_name]
Sementara untuk update-nya cukup dengan menambahkan nama cabang tersebut setelah hg update.
hg update [branch_name]
Perintah tadi juga bisa digunakan untuk loncat dari cabang ke cabang lain.