Version control workflow


This document aims to explain how Version Control Systems are used within the Yanel development process. The picture on the right should be understood as an example of a possible workflow, but remember that these are just conventions and are not set in stone. For an explanation of the review process, see the review then commit page.



The central Subversion repository is located at here. This repository always contains the master copy of Yanel. Whenever you want to make a new deployment of Yanel, use the Subversion repository to get the latest revision.



Note: You need at least version 1.5 of Mercurial, but 1.7 is recommended.

A Mercurial mirror of the central Subversion repository is located at here. This mirror is intended for developers who would like to use Mercurial rather than Subversion for their day-to-day work with Yanel. In the end, patches still need to be commited to the central Subversion repository however.

Technical details

For the Mercurial mirror to work correctly, three files are important (these are all checked into the Subversion repository):

  • .hgignore: List of files that should be ignored
  • .hgsub: List of all subrepositories
  • .hgsubstate: Current state of subrepositories

The subrepositories file is necessary because the Yanel Subversion repository contains other, external Subversion repositories used to to pull in various libraries/dependencies. The existance of the .hgsub file will make sure that Mercurial will also automatically make a checkout of these repositories for you. But please note that whenever a subrepository is updated, the .hgsubstate file must manually be updated within the Subversion repository. This is because the Mercurial mirror can not check files into the central Subversion repository, and as such cannot update the file by itself.



  • Why does mercurial use the abbreviation hg? Because Hg is the symbol of the chemical element mercury :-)

Your comments are much appreciated

Is the content of this page unclear or you think it could be improved? Please add a comment and we will try to improve it accordingly.