Mercurial

From Wiki
Jump to navigation Jump to search

Client

http://hginit.com/

The command for Mercurial is hg.

Create a repository

Suppose you want to set up version control for the my_code directory.

cd my_code
hg init    # creates .hg directory
hg add     # adds everything from the current directory
hg commit  # has you enter a text description, then creates a first snapshot of the directory


Commit, Revert, Log

hg commit                  # has you enter a text description in a text editor, then creates a snapshot of the directory
hg commit -m "my comment"  # commit with this comment
hg revert --all            # reverts everything back to the last commit
hg log                     # shows a list of all commits

Status, Diff, Remove, Add

> cp a.txt b.txt
> emacs a.txt
> rm favicon.ico
> hg status
M a.txt                   # Modified
? b.txt                   # "?" means mercurial doesn't know anything about this file yet
! favicon.ico             # "!" means missing
>
> hg diff a.txt           # show differences between last snapshot and current version
> hg remove favicon.ico   # really remove this file
> hg add                  # add all new files to repository
> hg status
M a.txt
A b.txt                   # Added
R favicon.ico             # Removed

You need to clear up all the ?s and !s in order to commit.

Cat, Diff, Update

hg cat a.txt            # print current version of a.txt
hg cat -r 0 a.txt       # print version 0 of a.txt
hg diff -r 0:1 a.txt    # show differences between versions 0 and 1 of a.txt
hg update -r 0          # revert to version 0 of the repository
hg update               # revert to the latest version of the repository

Clone from and push to a server

hg clone http://my_server:8000/ my_copy_of_the_code  # name the directory as you like
... commit changes ...
hg push   # upload latest committed version to the server

Server

Quick and dirty web server:

mkdir my_code
cd my_code
hg init
hg serve   # now accessible from http://my_server:8000/