Yeni başlayanlar için Mercurial: kesin pratik Rehber

esinlenerek yeni başlayanlar için Git: kesin pratik kılavuzu .

bu ' ' ' kullanım için Mercurial kullanma hakkında bilgi derlemesidir.

Acemi-çok iyi anlamadan kaynak kontrolü dokundu bir programcı.

pratik kapsayan durumlar çoğunluğu kullanıcılar genellikle karşılaşırlar-bir depo oluşturma, dallanma, birleştirme, çekme / uzak bir depoya itme vb.

Notlar :

  • bir şeyin nasıl yapıldığını açıklamak yerine uyguluyordu.
  • cevap başına bir soru ile anlaşma.
  • açıkça ve kısaca mümkün olduğunca cevap.
  • Yeni bir cevap oluşturmak yerine mevcut bir cevabı düzenleyin / uzatın aynı konu.
  • Mercurial wiki ya da HG kitap daha fazla bilgi edinmek isteyenler için bir bağlantı sağlayın.

sorular:

Kurulum / Kurulum

kod

ile çalışma

etiketleme, dallanma, bültenleri ,taban çizgileri

diğer

diğer Mercurial referanslar

237
tarihinde sordu Laz 2009-07-23 12:06:08
kaynak

22 ответов

dosyaları görmezden gelmek için nasıl yapılandırırsınız?

Ignore adlı normal bir metin dosyasında yapılandırılır .depo kök hgignore. Sadece normal bir dosya gibi ekleyin:

hg add .hgignore

dosya eşleştirme, glob ve regexp için kullanılabilir iki sözdizimi seçenekleri vardır. glob unix benzeri dosya uzantısı ve regexp düzenli ifadelerdir. Tek başına bir satırda syntax: glob veya syntax: regexp ekleyerek her etkinleştirin. Tüm satırlar sonraki sözdizimi işaretleyicisine kadar bu sözdizimini kullanacaktır. İstediğiniz kadar sözdizimi belirteçleri olabilir. Varsayılan sözdizimi regexp'dir, bu nedenle yalnızca regexp kullanıyorsanız herhangi bir sözdizimi işaretleyicisine ihtiyacınız yoktur.

#

ile yorum ekleyebilirsiniz

örnek:

# python temporary files
syntax: glob
*.pyc

#editor autosaves
*~

# temporary data
syntax: regexp
temp

Ignore yalnızca yönetilmeyen dosyalar için geçerlidir (yani, daha önce kontrol edilmeyen dosyalar). Sürüm denetimi altındaki dosyaları yoksaymak için anahtarları kullanabilirsiniz - Ben ve-X.

16
cevap Joakim Lundborg 2009-07-23 19:22:52
kaynak

kaydedilmemiş olanı veya mevcut kod tabanınızın durumunu nasıl görüyorsunuz?

değiştirilen dosyaların listesini görmek için:

$ hg status

bu, durumuyla birlikte değiştirilen her dosyayı yazdıracaktır; bunlar şunları içerebilir:

  • M - değiştirilmiş. Dosya değiştirildi ve değişiklikler işlenmedi.
  • A - ekledi. Dosya daha önce izlenmedi, ancak Mercurial taahhüt ederseniz onu izlemeye başlayacaktır.
  • R - kaldırıldı. Dosya daha önce izlendi, ancak Mercurial taahhüt ederseniz, bu ve gelecekteki taahhütlerde izlemeyi bırakacaktır.
  • ? - Bilinmiyor. Dosya şu anda Mercurial tarafından izlenmiyor. Eklemek için hg add kullanmadığınız sürece işlemenin üzerinde hiçbir etkisi olmayacaktır.
  • ! - eksik. Dosya izlendi ama Mercurial çalışma kopyasında bulamıyor.

aslında dosyalara yapılan değişiklikleri görmek için:

$ hg diff
7
cevap Steve Losh 2009-07-24 00:08:48
kaynak

yeni bir proje/depo nasıl oluşturulur?

$ hg init my-repository
6
cevap 2009-07-23 12:10:10
kaynak

Subversion ile nasıl arayüz yapabilirim?

üç yolu vardır:


dönüştürme uzantısı mevcut bir Subversion deposunu Mercurial bir depoya klonlayacaktır. Mercurial ile geliyor. Kabaca şu şekilde çalışır:

hg convert <Subversion URL or directory> <path to new Mercurial repository>

örneğin bu, sixapart memcached havuzunun gövdesini kapacaktır.

hg convert http://code.sixapart.com/svn/memcached/trunk

uzatma, bir Subversion deposundan Mercurial bir (biraz çekme gibi) yeni revizyonlar aşamalı olarak getirebilir. Bununla birlikte, Mercurial revizyonları almayı ve Subversion'a geri göndermeyi desteklemiyor (itme yok). [XXX: yanlışsa bunu düzeltin] .


hgsubversion uzantısı . Subversion API'sini kullandığı için birçok yönden en sofistike çözümdür Subversion deposu ile iletişim kurun. hg-svn Köprüsü olmayı hedefliyor. Revizyonların tam yuvarlak açılmasına (tam klon, çekme ve itme) izin verir, ancak bu yazı itibariyle [XXX: Eğer/yanlış olduğunda bunu değiştirin] hala gelişimde ve henüz resmi sürümler yok. Sonuç olarak sadece en güncel Mercurial (bu yazı itibariyle 1.3) ile çalışır.

  • Bilişim haritaları etiketler ve dallar (eşdeğer adlandırılmış dallardan ayırmak için tags/ ile tüm etiketlerden önce).
  • bu özel bir şube tutar closed-branches içinde kaldırılır dalları kapatmak için.
  • , nin, Subversion deposunun gövde/şube/etiket sözleşmesi uyarınca döşenmesini gerektirir.
  • komut kümesi genellikle hg svn <subcommand> hedefliyor olsa da 'svn' bölümüne ihtiyacınız olmadığı noktaya entegre olmak(yani bir Subversion klonunu diğer Mercurial depo gibi mümkün olduğunca tedavi etmek istiyor).;

şu şekilde çalışır:

klon:

hg svnclone <Subversion URL> 

veya (sadece svn:// için)

hg clone <svn:// URL>

çekme:

hg svn pull

itme:

hg svn push

.:

hg svn incoming

giden:

hg svn outgoing

bir depoyu kontrol etme:

hg svnclone http://code.sixapart.com/svn/memcached

hgsvn yardımcı programı ( bitbucket tree ). Yakın zamana kadar bu sadece bir Subversion deposunu klonlamanıza ve çekmenize izin verir, ancak hgsvn 0.1.7 itibariyle itmeyi destekler. [Nasıl bilmiyorum iyi itiyor. Herkes ile daha fazla deneyim bunu güncellemelidir.] Aşağıdaki önemli özelliklere sahiptir:

  • her SVN etiketi için bir Mercurial etiket oluşturur.
  • bir koyar yerel etiketi her CHANGESET SVN revizyon işaretlemek için.
  • her Mercurial revizyonu, SVN şubesinden sonra adlandırılmış bir şubeye koyar. Örneğin branches/some-feature hg branch some-feature gibi olurdu . Bu koyar trunk üzerindeki gövde (yani, kullanıcı açıkça ona geçmedikçe Mercurial varsayılan şubesinde hiçbir şey yoktur.)
  • dalları ve etiketleri tanımlamak ve bunları oluşturmak için çalışacağız ama bunu yapamıyorsanız sadece onları atlar. Subversion deposu geleneksel gövde/şube/etiket düzenini takip etmediğinde bu kullanışlıdır.

şu şekilde çalışır:

klon:

hgimportsvn <Subversion URL>

çekme:

hgpullsvn

itme:

hgpushsvn

gelen:

hgpullsvn -n

giden:

hgpushsvn -n

bir depoyu kontrol etme:

hgimportsvn http://code.sixapart.com/svn/memcached

sadece Bagaj kontrol:

hgimportsvn http://code.sixapart.com/svn/memcached/trunk
5
cevap quark 2009-08-19 04:15:25
kaynak

bir dosyanın iki revizyonunu veya mevcut dosyanızı ve önceki revizyonunu nasıl karşılaştırırsınız?

her ikisi de hg diff kullanır . hg diff kullanıldığında çalışma kopyasındaki tüm değişiklikler ve uç (en son taahhüt) görüntülenir.

için "bir dosyanın iki revizyonunu nasıl karşılaştırıyorsunuz?"

$ hg diff -r{rev1} -r{rev2} {file.code}

yukarıdaki komut rev1 ve rev2 arasında farklı gösterecektir "dosya.kod."

için "nasılsın mevcut dosyanızı ve önceki bir revizyonu karşılaştırın?"

$ hg diff {file.code}

yukarıdaki komut "dosyanın geçerli sürümü arasında farklı gösterecektir.kod " ve en son revizyon( en son taahhüt).

: d

5
cevap NawaMan 2009-09-12 00:15:18
kaynak

bunu her zaman daha sonra çekebilmeniz için belirli bir dosya kümesi için' etiket 'veya' release 'belirli bir düzeltme kümesini nasıl işaretlersiniz?

$ hg tag my-tag

özel bir etiketi deposu oluşturmak için deponuzu da klonlayabilirsiniz.

$ hg clone working-repository my-tag-repository
4
cevap 2009-07-23 16:41:01
kaynak

nasıl dalıyorsunuz?

$ hg şube my-şube

veya

$ hg clone original-repository my-branch

dal bir "sanal" dizin oluşturur (yani, dosyalar aynı kalır, ancak sistem içinde farklı oldukları gibi davranır), klonu gerçek, eksiksiz bir kopya oluşturur. Doğrusu, , dallanma değil.

4
cevap Nick Hodges 2010-12-11 00:55:53
kaynak
Mercurial için

iyi GUI/IDE eklentisi?

GUI

  • TortoiseHg hemen her işletim sistemi için. Windows Explorer entegrasyonunu içerir. Ayrıca Linux'ta ve diğer birkaç işletim sisteminde çalışır:Max OS X de dahil olmak üzere es. biraz tıknaz bir arayüze sahiptir ve ilk başta kullanmak için biraz beceriksizdir, ancak çok eksiksiz ve güçlüdür.
  • Murky Mac OS X 10.5 veya üstü çalışır. Murky olduğunu depoyu ve temel komutları keşfetmek için iyi, ancak Komut satırını nasıl kullanacağınızı bilmeniz gerekecek.
  • MacHg , Murky'den biraz daha işlevselliğe ve cilaya sahip güzel bir Mac OS X Guı'dir, ancak yine de komut satırına da ihtiyacınız olacaktır.
  • SourceTree bir Mac istemcisi başlangıçta, bir Windows sürümü ile sadece son zamanlarda kullanılabilir. Oldukça güzel UI (en azından OS X'te), raflar da dahil olmak üzere Hg özelliklerinin çoğunu destekler.

'

4
cevap Macke 2013-04-19 11:42:40
kaynak

değişiklikler nasıl yapılır?

bu komutu geçerli yerel * mercurial deposundan çağırın

hg commit [OPTION]... [FILE]...

takma adlar: cı

  • yerel bir mercurial depo vardır .hg geçerli dizin içinde

nerede seçeneği olabilir:

 -A --addremove     mark new/missing files as added/removed before committing
    --close-branch  mark a branch as closed, hiding it from the branch list
 -I --include       include names matching the given patterns
 -X --exclude       exclude names matching the given patterns
 -m --message       use <text> as commit message
 -l --logfile       read commit message from <file>
 -d --date          record datecode as commit date
 -u --user          record user as committer

bir örnek komut olurdu:

hg commit -m "added readme" README

notlar :

  • bir dosya listesi atlanırsa, "hg durumu" tarafından bildirilen tüm değişiklikler taahhüt edilecektir.
  • bir birleştirme sonucu taahhüt ediyorsanız, herhangi bir dosya adları veya-I/-x filtreleri vermeyin.
  • hiçbir taahhüt mesajı belirtilmezse, yapılandırılmış düzenleyici bir mesaj için size sormaya başlar.
3
cevap jpartogi 2009-09-07 05:53:56
kaynak

Mercurial nasıl kurulur?

Mercurial, yapılandırma bilgilerini ~/.hgrc *nıx sistemlerinde ve %UserProfile%\mercurial.ini de Windows sistemlerinde saklar. ( %UserProfile% genellikle "C:\Documents and Settings\[username]\" Windows 2000 veya Windows XP sistemlerinde ve genellikle C:\Users\[username]\ Windows Vista ve Windows 7 sistemlerinde.)

bir başlangıç noktası olarak, .hgrc veya mercurial.ini aşağıdaki yerleştirerek Mercurial kullanıcı adınızı ayarlamanız gerekir :

# This is a Mercurial configuration file.
[ui]
username = Firstname Lastname <[email protected]>

TortoiseHg kullanıcıları Windows sistemlerinde hgtk userconfig

Ayrıca bakınız " Mercurial yapılandırma dosyası oluşturma " bölüm 2 " Mercurial: kesin kılavuz ."

3
cevap las3rjock 2009-09-10 00:55:29
kaynak

dalları nasıl birleştirirsiniz?

$ cd repository-where-i-want-to merge
$ hg pull branch-i-want-to-merge
$ hg merge # if necessary
3
cevap Martin Geisler 2009-09-12 00:18:18
kaynak

Mercurial nasıl kurulur?

Linux'ta kaynaktan yüklediyseniz veya Windows yükleyicilerini kullandıysanız lütfen güzel bir şekilde düzenleyin.

Mac OS X 10.4 (Kaplan), 10.5 (leopar)

Python'un easy_install'ı kullanın ( Setuptools ile):

sudo easy_install mercurial

bu son sürümünü bulur (yazma sırasında 1.3.1) ve yükler:

/Library/Frameworks/Python.framework/Versions/2.6/bin/
Python İle

2.6 bu, aynı zamanda Mercurial OS X ınstaller paketi (26 Temmuz 2009 itibariyle 1.2.1'de) Python 2.5'e ihtiyaç duyduğundan şikayet ediyor. belgelerinden , Fink ve Macports'un 1.2 sürümünü yüklediği anlaşılıyor.

Linux

açık Linux paketlerinin çoğu geçerli sürümün gerisinde kalıyor gibi görünüyor, bu nedenle easy_ınstall (yukarıdaki gibi) kullanın veya Mercurial tarball , arşivi ayıklayın, mercurial dizinine değiştirin ve çalıştırın:

$ make
$ sudo make install    # do a system-wide install
$ hg debuginstall      # sanity check
$ hg                   # see help

( Mercurial, dağıtılmış sürüm kontrol sistemi tanıtan)

Windows

Mercurial son sürümü bir ikili paket var . TortoiseHg , Mercurial için bir Windows kabuk uzantısıdır ve yükler. Cygwin ayrıca Mercurial yükleyebilirsiniz.

alternatif olarak (burada çok uzun süre bağlantılı talimatlar), optimize edilmiş bir veya saf Python Mercurial versiyonunu kaynaktan oluşturabilirsiniz.

3
cevap Dave Everitt 2011-04-18 17:23:21
kaynak

en son kodu nasıl elde edersiniz?

Mercurial, bir depodan (in .hg / hgrc) böylece sadece çalıştırabilirsiniz:

hg pull

origin-repository en son kodu çekmek için. (Bu çalışma dizini güncelleştirmez)

hg update

çalışma dizini güncellemek için.

hg pull -u

bir seferde bir çekme ve bir güncelleme hem gerçekleştirmek için.

3
cevap Laz 2011-10-09 03:47:01
kaynak

kodu nasıl kontrol edersiniz?

hg clone [OPTION]... SOURCE [DEST]

nerede seçeneği olabilir:

 -U --noupdate      the clone will only contain a repository (no working copy)
 -r --rev           a changeset you would like to have after cloning
    --pull          use pull protocol to copy metadata
    --uncompressed  use uncompressed transfer (fast over LAN)
 -e --ssh           specify ssh command to use
    --remotecmd     specify hg command to run on the remote side

kaynak uzak URL veya bir dosya sistemi dizini olabilir deposunda bulunan orijinal dosyaların kaynağıdır. Örneğin:

ve hedef, kaynak kodunun yerel dosya sisteminde yer alacağı yerdir.

3
cevap jpartogi 2012-09-09 16:49:43
kaynak

değişiklikler nasıl yapılır?

$ hg commit -m "Commit message"
1
cevap NawaMan 2009-10-11 23:41:33
kaynak

itme sırasında Yukarı depoya hangi değişikliklerin gönderileceğini nasıl görüyorsunuz?

varsayılan depoya ayarlanacak değişiklik setlerinin listesini almak için hg outgoing kullanın:

$ hg outgoing

gerçek kod değişiklikleri almak için -p ( --patch ) kullanın. Bu, her changeset'i tam olarak çıkaracaktır:

$ hg outgoing -p
1
cevap robotadam 2009-10-11 23:52:55
kaynak

depodan bir dosyayı nasıl kaldırırsınız?

depodan bir dosyayı kaldırmak ve bir sonraki sayfada silinmesini sağlamak için:

$ hg remove {file(s)}

depodan bir dosyayı kaldırmak için, ancak

silinmiş değil
$ hg remove -Af {file(s)}

veya Mercurial 1.3

$ hg forget {file(s)}
1
cevap David Sykes 2010-04-16 14:02:09
kaynak

kodun önceki bir sürümüne nasıl geri dönersiniz?

dan bu soru

$ hg update [-r REV]

@van: daha sonra taahhüt ederseniz, etkili bir şekilde yeni bir şube oluşturacaksınız. Sonra sadece bu dalda çalışmaya devam edebilir veya sonunda mevcut olanı birleştirebilirsiniz.

1
cevap David Sykes 2017-05-23 14:55:06
kaynak

nasıl bir Changeset geri alabilirim?

birkaç seçenek mevcut

kolay yol (tek bir değişiklik seti geri)

$ hg backout -m 'back out second change' tip
reverting myfile
changeset 2:01adc4672142 backs out changeset 1:7e341ee3be7a
$ cat myfile
first change

sabit yol (elle fark edilir ve uygulanır)

Adım 1 : revizyon 107 ve 108 arasında değişen şeyleri geri döndürmek için bir yama dosyası oluşturun:

hg diff -r107 -r108 --reverse  > revert-change.patch

(dönüşümlü olarak, Hg diff-r108-r107 yok-ters ile aynı şeyi yapacağız)

Adım 2 : yama dosyasını uygulayın:

patch -p1 < revert-change.patch

diff bazı uygulamak başarısız olabilir, örneğin:

Hunk #3 FAILED at 517.
1 out of 3 hunks FAILED -- saving rejects to file 'foo/bar.c.rej'

.rej dosyası uygulamak için başarısız fark içeriğini içerecektir, bir göz gerekir.

1
cevap slf 2010-10-28 19:11:30
kaynak

revizyonların geçmişini bir dosyaya veya depoya nasıl görüyorsunuz?

tüm depo veya dosyaların revizyon geçmişini göstermek için

$ hg log {file(s)}

veya

$ hg history {file(s)}

ve ters sırada

listesine bakın
$ hg log -r:
1
cevap David Sykes 2017-05-23 14:55:06
kaynak

bir dalın parçalarını başka bir dala nasıl birleştirirsiniz?

'transplant' uzantısını etkinleştirin .hg / hgrc

[extensions]
transplant=

hedef şubeyi yükleyin ve hedef revizyonu nakletin.

örneğin: 'foo' şubesinden

şubesine kiraz toplama revizyon 81
$ hg transplant -b foo 81
1
cevap John Mee 2010-11-24 09:33:42
kaynak

belirli bir değişiklikten bir yama nasıl çıkarılır?

$ hg export -o patchfile changeset

bunu başka bir şubeye aktarabilirsiniz:

$ hg import patchfile
1
cevap David Sykes 2011-10-12 17:15:46
kaynak

Diğer sorular version-control mercurial