Terinspirasi oleh Git untuk pemula: Panduan praktis definitif .
Ini adalah kompilasi informasi tentang penggunaan Mercurial untuk pemula untuk penggunaan praktis .
Pemula - seorang programmer yang telah menyentuh kontrol sumber tanpa memahaminya dengan baik.
Praktis - mencakup situasi yang sering ditemui mayoritas pengguna - membuat repositori, bercabang, menggabungkan, menarik / mendorong dari / ke repositori jarak jauh, dll.
Catatan :
- Jelaskan bagaimana menyelesaikan sesuatu daripada bagaimana sesuatu dilaksanakan.
- Berurusan dengan satu pertanyaan per jawaban.
- Jawab dengan jelas dan seringkas mungkin.
- Edit / perpanjang jawaban yang sudah ada daripada buat jawaban baru pada topik yang sama.
- Berikan tautan ke wiki Mercurial atau HG Book untuk orang yang ingin mempelajari lebih lanjut.
Pertanyaan:
Instalasi / Pengaturan
- Bagaimana cara menginstal Mercurial?
- Bagaimana cara mengatur Mercurial?
- Bagaimana Anda membuat proyek / repositori baru?
- Bagaimana Anda mengonfigurasinya untuk mengabaikan file?
Bekerja dengan kode
- Bagaimana Anda mendapatkan kode terbaru?
- Bagaimana Anda memeriksa kode?
- Bagaimana Anda melakukan perubahan?
- Bagaimana Anda melihat apa yang tidak dikomit, atau status basis kode Anda saat ini?
- Bagaimana Anda menghapus file dari repositori?
- Bagaimana Anda menghancurkan komitmen yang tidak diinginkan?
- Bagaimana Anda membandingkan dua revisi file, atau file Anda saat ini dan revisi sebelumnya?
- Bagaimana Anda melihat riwayat revisi file atau repositori?
- Bagaimana Anda menangani file biner (visio docs, misalnya, atau lingkungan kompiler)?
- Bagaimana Anda menggabungkan file yang diubah pada "waktu yang sama"?
- Bagaimana Anda mengembalikan suatu Changeset?
- Bagaimana Anda kembali ke versi kode sebelumnya?
- Bagaimana cara Anda mengekstrak tambalan dari perubahan tertentu?
- Bagaimana Anda merekam bahwa Anda mengganti nama atau menghapus file tanpa menggunakan perintah Mercurial?
Penandaan, percabangan, rilis, baseline
- Bagaimana Anda 'menandai' 'tag' atau 'merilis' set revisi tertentu untuk set file tertentu sehingga Anda selalu dapat menariknya nanti?
- Bagaimana Anda menarik 'rilis' tertentu?
- Bagaimana Anda bercabang?
- Bagaimana Anda menggabungkan cabang?
- Bagaimana Anda menggabungkan bagian dari satu cabang ke cabang lain?
Lain
- Plugin GUI / IDE yang bagus untuk Mercurial? Keuntungan Kerugian?
- Adakah tugas umum lainnya yang harus diketahui pemula?
- Bagaimana cara saya berinteraksi dengan Subversion?
Referensi Mercurial lainnya
- Mercurial: Panduan Definitif
- Wiki Mercurial
- Temui Mercurial | Screencast Peepcode
- Menguasai Mercurial | TekPub Screencast
- Hg Init - tutorial Mercurial dari bawah ke atas
hg add
mengabaikan file, Mercurial akan melacaknya. Misalnya, jika Anda memiliki banyak file sepertideploy-test.conf
,deploy-production.conf
, dll dan tidak ingin versi mereka (mereka mungkin memiliki password di dalamnya) tetapi Anda lakukan ingin versideploy-template.conf
Anda hanya bisa mengabaikandeploy*
dan manual menambahkandeploy-templace.conf
.Bagaimana Anda melihat apa yang tidak dikomit, atau status basis kode Anda saat ini?
Untuk melihat daftar file yang telah diubah:
Ini akan mencetak setiap file yang telah diubah beserta statusnya, yang dapat mencakup:
M
- Diubah. File telah diubah dan perubahan belum dilakukan.A
- Ditambahkan. File tidak dilacak sebelumnya, tetapi jika Anda melakukan Mercurial akan mulai melacaknya.R
- Dihapus. File itu dilacak sebelumnya, tetapi jika Anda melakukan Mercurial akan berhenti melacaknya dalam komitmen ini dan yang akan datang.?
- Tidak dikenal. File saat ini tidak dilacak oleh Mercurial. Komitmen tidak akan berpengaruh padanya kecuali Anda menggunakannyahg add
untuk menambahkannya.!
- Hilang. File dilacak tetapi Mercurial tidak dapat menemukannya di copy pekerjaan.Untuk melihat perubahan yang sebenarnya telah dibuat ke file:
sumber
Bagaimana Anda membuat proyek / repositori baru?
sumber
Bagaimana cara saya berinteraksi dengan Subversion?
Ada tiga cara:
The ekstensi mengkonversi akan mengkloning sebuah repositori Subversion yang ada menjadi satu Mercurial. Itu datang dengan Mercurial. Ini kira-kira berfungsi seperti ini:
Sebagai contoh, ini akan mengambil bagasi repositori memcached SixApart.
Ekstensi tersebut secara bertahap dapat membawa revisi baru dari repositori Subversion ke repositori Mercurial (sedikit seperti tarikan). Namun itu tidak mendukung mengambil revisi Mercurial dan mengirimkannya kembali ke Subversion (tanpa dorongan). [XXX: Perbaiki ini jika salah] .
The hgsubversion ekstensi . Dalam banyak hal, ini adalah solusi paling canggih karena menggunakan API Subversion untuk berkomunikasi dengan repositori Subversion. Ini bertujuan untuk menjadi yang jembatan hg-svn. Ini memungkinkan trip-trip penuh revisi (klon penuh, tarik, dan dorong), Namun pada tulisan ini [XXX: Ubah ini jika / ketika menjadi salah] masih dalam pengembangan dan belum ada rilis resmi. Sebagai akibatnya, ia hanya bekerja dengan Mercurial terbaru (1.3 saat tulisan ini).
tags/
untuk membedakan mereka dari cabang bernama setara).closed-branches
untuk menutup cabang yang dihapus di Subversion.hg svn <subcommand>
meskipun bertujuan untuk diintegrasikan ke titik bahwa Anda tidak memerlukan bagian 'svn' (yaitu ingin memperlakukan klon Subversion sebanyak mungkin seperti repositori Mercurial lainnya);;Ini berfungsi seperti ini:
klon:
ATAU (hanya untuk
svn://
URL)Tarik:
Dorong:
masuk:
keluar:
Memeriksa seluruh repositori:
The hgsvn utilitas ( pohon bitbucket ). Hingga baru-baru ini hanya memungkinkan Anda mengkloning dan menarik repositori Subversion, tetapi pada saat
hgsvn 0.1.7
itu mendukung push. [Saya tidak tahu seberapa baik itu mendorong. Siapa pun yang lebih berpengalaman harus memperbarui ini.] Ia memiliki fitur-fitur penting berikut:branches/some-feature
akan sepertihg branch some-feature
. Itu menempatkan trunktrunk
(yaitu tidak ada pada cabang default Mercurial, kecuali pengguna secara eksplisit beralih ke itu.)Ini berfungsi seperti ini:
klon:
Tarik:
Dorong:
masuk:
keluar:
Memeriksa seluruh repositori:
Memeriksa hanya bagasi:
sumber
hg convert
dan itu benar-benar membutuhkan waktu lama ketika Anda memiliki repositori svn dengan banyak komit. Menyiapkan repositori lokal dengansvnsync
banyak membantu mempercepat - terutama ketika Anda perlu melakukannya beberapa kali, karena Anda memiliki beberapa opsi yang salah dalam perintah convert Anda.svnsync
perlu mengakses file repositori yang sebenarnya, bukan hanya URL.Bagaimana Anda membandingkan dua revisi file, atau file Anda saat ini dan revisi sebelumnya?
Keduanya digunakan
hg diff
. Kapanhg diff
digunakan semua perubahan dalam copy pekerjaan dan tip (komit terbaru) ditampilkan.Untuk "Bagaimana Anda membandingkan dua revisi file?"
Perintah di atas akan menunjukkan perbedaan antara rev1 dan rev2 dari "file.code".
Untuk "Bagaimana Anda membandingkan file Anda saat ini dan revisi sebelumnya?"
Perintah di atas akan menunjukkan perbedaan antara versi "file.code" saat ini dan revisi terbaru (yang terakhir dilakukan).
: D
sumber
Bagaimana Anda 'menandai' 'tag' atau 'merilis' set revisi tertentu untuk set file tertentu sehingga Anda selalu dapat menariknya nanti?
Anda juga dapat mengkloning repositori Anda untuk membuat repositori tag khusus .
sumber
hg tag my-tag
?Bagaimana Anda bercabang?
$ hg cabut cabang saya
atau
$ hg klon-repositori asli-cabang saya
Meskipun harus dicatat bahwa cabang membuat direktori "virtual" (yaitu, file tetap sama, tetapi hg memperlakukannya seolah-olah mereka berbeda di dalam sistem), sementara klon membuat salinan lengkap yang sebenarnya. Sebenarnya, clone tidak bercabang.
sumber
hg branch my-branch
Plugin GUI / IDE yang bagus untuk Mercurial?
GUI
Plugin
sumber
Bagaimana Anda melakukan perubahan?
Aktifkan perintah ini dari repositori * mercurial lokal saat ini
alias: ci
Di mana opsi dapat:
Contoh perintahnya adalah:
CATATAN :
sumber
Bagaimana cara mengatur Mercurial?
Mercurial menyimpan informasi konfigurasinya di
~/.hgrc
sistem * nix dan%UserProfile%\mercurial.ini
sistem Windows. (%UserProfile%
biasanya"C:\Documents and Settings\[username]\"
pada sistem Windows 2000 atau Windows XP, dan biasanyaC:\Users\[username]\
pada sistem Windows Vista dan Windows 7.)Sebagai titik awal, Anda harus menetapkan nama pengguna Mercurial Anda dengan menempatkan yang berikut di
.hgrc
ataumercurial.ini
:Pengguna TortoiseHg di sistem Windows dapat juga menjalankannya
hgtk userconfig
Lihat juga " Membuat file konfigurasi Mercurial " di bab 2 dari " Mercurial: The Definitive Guide ."
sumber
Bagaimana Anda menggabungkan cabang?
sumber
Bagaimana cara menginstal Mercurial?
Harap edit dengan baik jika Anda telah menginstal dari sumber di Linux, atau menggunakan installer Windows.
Mac OS X 10.4 (Tiger), 10.5 (Leopard)
Gunakan easy_install Python (dengan Setuptools ):
Ini menemukan versi terbaru (1.3.1 saat penulisan) dan menginstal di:
Dengan Python 2.6 ini juga menyiasati paket pemasang Mercurial OS X (pada 1.2.1 per 26 Juli 2009) mengeluh bahwa ia membutuhkan Python 2.5. Dari dokumentasi , tampak bahwa Fink dan Macports menginstal versi 1.2.
Linux
Sebagian besar paket Linux eksplisit tampak tertinggal dari versi saat ini, jadi gunakan easy_install (seperti di atas) atau unduh tarball Mercurial , ekstrak arsip, ubah ke direktori mercurial, dan jalankan:
(dari Introducing Mercurial, sistem kontrol versi terdistribusi )
Windows
Ada paket biner dari versi terbaru Mercurial . TortoiseHg adalah ekstensi shell Windows untuk, dan menginstal, Mercurial. Cygwin juga dapat menginstal Mercurial.
Atau (petunjuk terlalu panjang sehingga terkait di sini), Anda dapat membangun dioptimalkan atau Python murni versi Mercurial dari sumber.
sumber
Bagaimana Anda mendapatkan kode terbaru?
Mercurial mengingat di mana repositori dikloning dari (dalam .hg / hgrc) sehingga Anda bisa menjalankan:
untuk menarik kode terbaru dari repositori asal. (Ini tidak memperbarui direktori kerja)
untuk memperbarui direktori kerja.
untuk melakukan tarikan dan pembaruan sekaligus.
sumber
.hg/hgrc
ketika Anda melakukan kloning, jadi Anda tidak harus menentukan kapan Anda menarik / mendorong. Anda dapat menambahkan lebih banyak jalur ke[paths]
bagian ini.hg/hgrc
jika Anda mau.Bagaimana Anda memeriksa kode?
Di mana opsi dapat:
Di mana sumber adalah sumber dari file asli yang terletak di repositori, di mana ia bisa berupa URL jarak jauh atau direktori sistem file. Sebagai contoh:
Dan tujuan adalah tempat kode sumber akan berlokasi di sistem file lokal Anda.
sumber
Bagaimana Anda melakukan perubahan?
sumber
Bagaimana Anda melihat perubahan apa yang akan dikirim ke repositori hulu saat Anda mendorong?
Gunakan
hg outgoing
untuk mendapatkan daftar perubahan yang akan diatur ke repositori default:Untuk mendapatkan perubahan kode yang sebenarnya, gunakan
-p
(--patch
). Ini akan menampilkan setiap perubahan secara penuh:sumber
Bagaimana Anda menghapus file dari repositori?
Untuk menghapus file dari repositori, dan menghapusnya di komit berikutnya:
Untuk menghapus file dari repositori, tetapi belum dihapus
atau dari Mercurial 1.3
sumber
Bagaimana Anda kembali ke versi kode sebelumnya?
Dari pertanyaan ini
@van: Jika nanti Anda berkomitmen, Anda akan secara efektif membuat cabang baru. Maka Anda mungkin terus bekerja hanya pada cabang ini atau akhirnya menggabungkan yang sudah ada ke dalamnya.
sumber
Bagaimana Anda mengembalikan suatu Changeset?
Beberapa opsi tersedia
Easy Way (mundur satu set perubahan tunggal)
Hard Way (berbeda secara manual dan berlaku)
Langkah 1 : Buat file patch untuk mengembalikan apa yang berubah antara revisi 107 dan 108:
(secara bergantian, hg diff -r108 -r107 tanpa --reverse akan melakukan hal yang sama)
Langkah 2 : Terapkan file tambalan:
Beberapa perbedaan mungkin gagal diterapkan, misalnya:
File .rej akan berisi konten diff yang gagal diterapkan, Anda harus melihatnya.
sumber
hg backout
?Bagaimana Anda melihat riwayat revisi file atau repositori?
Untuk menampilkan riwayat revisi seluruh repositori atau file
atau
Dan untuk melihat daftar dalam urutan terbalik
sumber
Bagaimana Anda menggabungkan bagian dari satu cabang ke cabang lain?
Aktifkan ekstensi 'transplantasi' di .hg / hgrc Anda
Muat cabang target kemudian transplantasi revisi target.
misal: cherry pick revisi 81 dari cabang 'foo' ke cabang saat ini
sumber
graft
perintah bawaan untuk melakukan hal yang sama.hg help graft
untuk info lebih lanjutBagaimana cara Anda mengekstrak tambalan dari perubahan tertentu?
Anda kemudian dapat mengimpor ini ke cabang lain dengan:
sumber