Mercurial notes

distributed version control system:
   maintain version history
   merge changes between and within files
   peer-to-peer development
   remote server file system management

tutorials:
   http://mercurial.selenic.com/wiki/Tutorial
   http://mercurial.selenic.com/wiki/UnderstandingMercurial
   http://hginit.com/
   http://hgbook.red-bean.com/
   http://fab.cba.mit.edu/classes/MIT/863.10/people/kenny.cheung/hgNotes.html
   http://fab.cba.mit.edu/classes/MIT/863.10/people/natalie.freed/Mercurial_notes_notes.html

file manager extension:
   http://tortoisehg.bitbucket.org/

Linux packages:
   apt-get install mercurial tortoisehg tortoisehg-nautilus  

Windows:
   http://tortoisehg.bitbucket.org/download/index.html
   http://www.cygwin.com/ (openssh, mercurial shell)

OSX:
   http://bitbucket.org/tortoisehg/stable/wiki/MacOSX
   http://mercurial.berkwood.com/
   http://jasonfharris.com/machg/
   http://bitbucket.org/snej/murky/wiki/Home
   http://jwwalker.com/pages/macmerc.html

some shell commands:

   hg init (start archive)
   hg clone (copy archive)
   hg clone -e "ssh_path -i ~/.ssh/key_name" ssh://hg@fab.cba.mit.edu/archive_name local_archive_name
   hg add (add files)
   hg commit -m "message" (alias ci)
   hg revert -a --no-backup (reset file system)
   hg merge (merge diverged versions)
   hg pull (pull from archive)
   hg push (push to archive)
   hg update (update file system, alias up)
   hg update null (alias for creating bare repository)
   hg fetch (pull and update)
   hg log (history)
   hgtk log (history GUI)
   hg status (repository status, alias st)
   hg summary (repository summary, alias sum)
   hg copy (copy versioned file, alias cp)
   hg remove (remove versioned file alias rm)
   hg remove --after (remove deleted files from versioning)
   hg rename (rename versioned file alias mv)
   hg serve (Web server)
   hg convert (import from another repository type)
   hg heads (list repository heads)

~/.hgrc (global) &/or .hg/hgrc (per-archive) configuration:

   [ui]
   username = first_name last_name <user@machine.domain>
   ssh = ssh_command_path -i ~/.ssh/key_name_to_use -C
   editor = name_of_your_editor

   [extensions]
   convert =
   fetch =

   [hooks]
   changegroup = hg update >&2

public and private keys to ~/.ssh
   note that private key should have permissions so that
   only you can read it

port: ~/.ssh/config
   host server_name
   port port_number

.hgignore
   file types to ignore