Programming‎ > ‎


If the VCS command most used is blame your company has a bad development culture.

Version control systems are used to keep track of changes to source code or any other type of digital documents. My current choice is to use Mercurial with a central repository that everyone sync with.

Mercurial - 2005

This is a distributed system so it's much better to work with then CVS or SVN. 

Get the current working copy revision from command line.
Use the identify command and select if you like the local number or global id.

hg identify --num
hg identify --id

Extension: Rebase
When working on local changes and doing a update one can use the rebase extension to move the local changes to main branch to make it all look like a linear series of changes. 

HG case-folding collision

Mercurial can handle file names that differ in case only in the repository. So egg.png and Egg.png is two different files. Trying to use that on windows as a working directory or merge will fail as windows see them as the same file. That can be solved by using the terminal in hg and rename one of the files and commit.

hg rename Egg.png egg.png

Undo local changes that have not been commited
Use revert on the files or revert --all.

Undo local changes that have been commited
Use the stip command to remove a changeset and all its descendants from the repository. To remove one or more changeset in the middle use rebase command and then strip.

Move some local commits from one branch to another
With the rebase command it is possible to move draft changesets from one place to another. It can be used to make the history more linear and avoid extra merges.

Collaps a groupd of local commits into one
Use the rebase -- collapse command.

Mercurial source code management system

Git - 2005

SVN - 2000

Ignore files
To ignore files add the name of the file to the property ignore on the directory where the file is found.

CVS - 1990