CVS, SVN, and VSS is central repository management tool. Those are already yesterday's tool.
Ruby language itself is using SVN as a primary repository.

Git and Marcurial are distributed repository management tool.
Python language itself and a python package are using Marcurial. That is a reason that I started to use it.

As Git and Marcurial are distributed repository management tool for each other. The commands are similar [1]

So, let's try.

Try for commands!

Let me use below repository as my training. [2][3]
BitBucket is supporting not only Git, but also Marcurial.
It may be their unique strength for Github.
The official document is useful too [4]

Initial setting

Create config file like ~/.gitconfig.
below editor line is to prevent an error "abort: edit failed: vi exited with status 1" after hg commit on Mac.
Mac vi exits with exit status non-zero, and it causes the error for hg.

Clone

$ hg clone ssh://hg@bitbucket.org/blais/snakefood
$ cd snakefood

Help

$ hg help
Mercurial Distributed SCM
list of commands:
add add the specified files on the next commit
addremove add all new files, delete all missing files
annotate show changeset information by line for each file
archive create an unversioned archive of a repository revision
backout reverse effect of earlier changeset
bisect subdivision search of changesets
bookmarks create a new bookmark or list existing bookmarks
branch set or show the current branch name
branches list repository named branches
bundle create a changegroup file
cat output the current or given revision of files
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
config show combined config settings from all hgrc files
copy mark files as copied for the next commit
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
files list tracked files
forget forget the specified files on the next commit
graft copy changes from other branches onto the current branch
grep search for a pattern in specified files and revisions
heads show branch heads
help show help for a given topic or a help overview
identify identify the working directory or specified revision
import import an ordered set of patches
incoming show new changesets found in source
init create a new repository in the given directory
log show revision history of entire repository or files
manifest output the current or given revision of the project manifest
merge merge another revision into working directory
outgoing show changesets not found in the destination
paths show aliases for remote repositories
phase set or show the current phase name
pull pull changes from the specified source
push push changes to the specified destination
recover roll back an interrupted transaction
remove remove the specified files on the next commit
rename rename files; equivalent of copy + remove
resolve redo merges or set/view the merge status of files
revert restore files to their checkout state
root print the root (top) of the current working directory
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
tag add one or more tags for the current or given revision
tags list repository tags
unbundle apply one or more changegroup files
update update working directory (or switch revisions)
verify verify the integrity of the repository
version output version and copyright information
additional help topics:
config Configuration Files
dates Date Formats
diffs Diff Formats
environment Environment Variables
extensions Using Additional Features
filesets Specifying File Sets
glossary Glossary
hgignore Syntax for Mercurial Ignore Files
hgweb Configuring hgweb
merge-tools Merge Tools
multirevs Specifying Multiple Revisions
patterns File Name Patterns
phases Working with Phases
revisions Specifying Single Revisions
revsets Specifying Revision Sets
scripting Using Mercurial from scripts and automation
subrepos Subrepositories
templating Template Usage
urls URL Paths
(use "hg help -v" to show built-in aliases and global options)