Stručný úvod pro netrpělivé

(viz také Základy Mercurialu, CzechTutorial, QuickStart2 a http://mercurial.selenic.com/quickstart/)

1. Jméno uživatele

Při zápisu změn (commit) používá Mercurial jméno uživatele implicitně ve tvaru 'user@localhost'. Nejlepší je zapsat jméno uživatele do konfiguračního souboru

[ui]
username = John Doe <john@example.com>

2. Práce na existujícím projektu

Známe-li URL projektu (například http://selenic.com/hg), můžeme získat jeho kopii následovně:

$ hg clone http://selenic.com/hg mercurial-repo
real URL is http://www.selenic.com/hg/
requesting all changes
adding changesets
adding manifests
adding file changes
added 9633 changesets with 19124 changes to 1271 files
updating to branch default
1084 files updated, 0 files merged, 0 files removed, 0 files unresolved

Příkaz vytvoří nový adresář mercurial-repo do něhož přenese celou historii projektu - repozitář .hg a případně všechny pracovní soubory (viz clone).

Podívejme se, co bylo přeneseno (see parents):

$ cd mercurial-repo
$ hg parents
changeset:   9632:16698d87ad20
tag:         tip
user:        Nicolas Dumazet <...>
date:        Mon Sep 21 19:21:32 2009 +0200
summary:     util: use sys.argv[0] if $HG is unset and 'hg' is not in PATH

Příkaz summary (Zavedený v Mercurialu 1.4) vypíše souhrn pracovního adresáře. Názvy příkazů lze zkracovat, takže postačí hg sum:

$ hg sum
parent: 9632:16698d87ad20 tip
 util: use sys.argv[0] if $HG is unset and 'hg' is not in PATH
branch: default
commit: (clean)
update: (current)

commit: (clean) znamená, že pracovní adresář neobsahuje lokální změny update: (current) znamená, že sledované soubory pracovního adresáře jsou aktualizovány (update) k nejnovější revizi repozitáře.

3. Založení nového projektu

Nový repozitář v adresáři Holba vytvoříme příkazem init:

$ cd Holba/
$ hg init           # creates .hg

Mercurial vyhledává soubor .hgignore 2 v pracovním adresáři, který obsahuje sadu vzorů (glob) a regulárních výrazů, které mají být na cestách k souborům ignorovány. Zde je příklad souboru .hgignore:

syntax: glob
*.orig
*.rej
*~
*.o
tests/*.err

syntax: regexp
.*\#.*\#$

Tento soubor vytvoříme buď sami, nebo se vytvoří sám po prvním použití příkazu hg ignore.

Stav pracovního adresáře zjistíme příkazem status:

$ hg status        

Pokud se nic nezobrazí, je naše pracovní kopie "čistá". Pokud obsahuje změněné, přidané nebo odebrané soubory, vypíše tyto soubory s flagy 'A' (added), 'R' (removed), 'M' (modified), '?' (nesledován). Soubory, které chceme trvale vyřadit ze sledování, zapíšeme do souboru .hgignore. Změny, které chceme zapsat do repozitáře, musíme nejprve add (přidat)a posléze je předat (commit):

$ hg add            # přidat ony 'neznáme' soubory
$ hg commit         # předat všechny změny do nového changesetu
$ hg parents        # zobrazit právě vytvořenou revizi (changeset)

Podrobný popis všech příkazů viz http://www.selenic.com/mercurial/hg.1.html nebo lze zadat:

$ hg help 

Nápovědu pro konkretní příkaz (např. add) vyvoláme příkazem:

$ hg help add

4. Clone, Commit, Merge

$ hg clone project project-work    # klonovat pracovní adresář s repozitářem
$ cd project-work
$ <make changes>                   # provést nějaké změny
$ hg commit
$ cd ../project
$ <make other changes>             # provést jiné změny
$ hg commit
$ hg pull ../project-work   # stáhnout changesety z 'project-work'
$ hg merge                  # sloučit stažený tip s tipem našeho repozitáře
$ hg parents                # prohlédnout si stažené a sloučené revize
$ hg commit                 # předat výsledek sloučení

See clone, commit, pull, merge

5. Export oprávky

(make changes)
$ hg commit
$ hg export tip    # exportovat poslední komit

Viz export

6. Podpora webové sítě

# klon z primárního repozitáře Mercurialu
$ hg clone http://selenic.com/hg/
$ cd hg

# pull new changesets from an existing other repo into the repository (.hg)
$ hg pull http://selenic.com/hg/

# export your current repo via HTTP with browsable interface on port 8000
$ hg serve -n "My repo"

# push changesets to a remote repo with SSH
$ hg push ssh://user@example.com/hg/

See pull, serve, push


translations: Chinese Français German Portuguese Japanese Thai